จะยอมรับอินพุตจาก Command Line ใน Node.js ได้อย่างไร

Ca Yxmrab Xinphut Cak Command Line Ni Node Js Di Xyangri



Node.js คือสภาพแวดล้อมรันไทม์ JavaScript แบบโอเพ่นซอร์สฟรีที่รู้จักกันดี ซึ่งช่วยให้ผู้ใช้สามารถรันโค้ด JavaScript จากไฟล์หรือจากบรรทัดคำสั่งได้โดยตรง การเรียกใช้โค้ด JavaScript จากไฟล์ต้องใช้ภายนอก “ . เจส ” คำสั่งไฟล์ในขณะที่บรรทัดคำสั่งรันโค้ด JavaScript โดยตรงทีละบรรทัด

บางครั้งผู้ใช้จำเป็นต้องกำหนดค่าข้อมูลในขณะที่เรียกใช้แอปพลิเคชัน Node.js จากบรรทัดคำสั่งผ่านทาง “ โหนด <ชื่อไฟล์> '. ในสถานการณ์เช่นนี้ ผู้ใช้จำเป็นต้องส่งข้อมูลนั้นโดยตรงเป็นอินพุตด้วยคำสั่งดำเนินการ แทนที่จะเขียนลงใน ' เจส ' ไฟล์.







บทความนี้จะกล่าวถึงวิธีการที่เป็นไปได้ทั้งหมดในการรับอินพุตจากบรรทัดคำสั่งใน Node.js



จะยอมรับอินพุตจาก Command Line ใน Node.js ได้อย่างไร

Node.js เสนอโมดูลต่อไปนี้เพื่อรับอินพุตจากบรรทัดคำสั่ง:



มาเริ่มกันที่ “ อ่านบรรทัด ' โมดูล.





ข้อกำหนดเบื้องต้น : ก่อนที่จะไปสู่การใช้งานจริงของวิธีการใดๆ ขั้นแรกให้สร้าง ' เจส ” ชื่อใดก็ได้ และเขียนซอร์สโค้ดทั้งหมดลงไป ที่นี่เราได้สร้าง “ ดัชนี ไฟล์ .js”

วิธีที่ 1: ยอมรับอินพุตจากบรรทัดคำสั่งโดยใช้โมดูล 'readline'

อ่านบรรทัด ” โมดูลสร้างอินเทอร์เฟซสำหรับอ่านอินพุตของผู้ใช้จากสตรีมที่อ่านได้และส่งกลับการตอบสนองเป็นเอาต์พุตผลลัพธ์ เป็นโมดูลในตัวเพื่อให้ผู้ใช้สามารถนำเข้าโดยตรงไปยังแอปพลิเคชัน Node.js โดยไม่ต้องติดตั้งโดยใช้ “ เวลา 22.00 น '.



ในสถานการณ์สมมตินี้ จะใช้เพื่อรับอินพุตจากบรรทัดคำสั่งแล้วพิมพ์บนหน้าจอเอาต์พุต นี่คือการนำไปปฏิบัติจริง:

ค่าคงที่ อ่านบรรทัด = จำเป็นต้อง ( 'อ่านไลน์' )
ค่าคงที่ ร.ล = อ่านบรรทัด สร้างอินเทอร์เฟซ ( {
ป้อนข้อมูล : : กระบวนการ. มาตรฐาน ,
เอาท์พุท : : กระบวนการ. มาตรฐาน
} )
ร.ล. คำถาม ( `แพลตฟอร์มที่ดีที่สุด สำหรับ เนื้อหาทางเทคนิค ? ` , เว็บไซต์ => {
ร.ล. คำถาม ( `หมวดหมู่ใดที่คุณต้องการสำรวจ ? ` , หมวดหมู่ => {
คอนโซล บันทึก ( `เว็บไซต์ : : $ { เว็บไซต์ } , หมวดหมู่ : : $ { หมวดหมู่ } ` )
ร.ล. ปิด ( )
} )
} )

คำอธิบายของบรรทัดโค้ดข้างต้นมีดังนี้:

  • ประการแรก “ จำเป็นต้อง ()” วิธีการนำเข้า “ อ่านบรรทัด ” โมดูลในโครงการ Node.js ปัจจุบัน
  • ต่อไป “ สร้างอินเทอร์เฟซ ()” วิธีการระบุ “ อินพุต” และ “เอาต์พุต ” สตรีมเป็นวัตถุ “ ป้อนข้อมูล ” กระแสใช้ “ กระบวนการ.stdin ” คุณสมบัติสำหรับรับอินพุตจากผู้ใช้
  • เอาท์พุท ” สตรีมใช้ “ กระบวนการ.stdout ” คุณสมบัติสำหรับการอ่านสตรีมอินพุตและพิมพ์เป็นเอาต์พุตมาตรฐานของสตรีมอินพุตที่กำหนด
  • หลังจากนั้น “ rl.คำถาม ()” วิธีการรับอินพุตจากผู้ใช้ มันส่งคำถามเป็นคำถามแรกและฟังก์ชันการเรียกกลับเป็นอาร์กิวเมนต์ที่สอง ฟังก์ชันลูกศรเรียกกลับที่กำหนดจะดึงค่าที่ผู้ใช้ป้อน
  • ในคำจำกัดความที่ให้ไว้ “ เว็บไซต์ ', และ ' หมวดหมู่ ” ฟังก์ชั่นลูกศรโทรกลับ “ console.log ()” ใช้เพื่อแสดงค่าที่ป้อน
  • สุดท้ายนี้ “ rl.ปิด ()” วิธีการปิดอินเทอร์เฟซที่สร้างขึ้นข้างต้น

เอาท์พุต

ริเริ่ม “ ดัชนี .js” โดยการรันคำสั่งที่ให้มา:

ดัชนีโหนด เจส

เอาต์พุตต่อไปนี้แสดงอินเทอร์เฟซแบบอ่านข้อมูลที่รับอินพุตของผู้ใช้จากบรรทัดคำสั่ง จากนั้นแสดงค่าที่ป้อนเป็นเอาต์พุตมาตรฐาน:

วิธีที่ 2: ยอมรับอินพุตจากบรรทัดคำสั่งโดยใช้โมดูล 'readline-sync'

Readline-ซิงค์ ” เป็นโมดูลของบริษัทอื่นที่ดึงข้อมูลที่เกี่ยวข้องกับคำถามแบบฮาร์ดโค้ดพร้อมๆ กัน และจัดเก็บคำตอบที่เกี่ยวข้องสำหรับการดำเนินการในอนาคต มันทำหน้าที่เป็นการสื่อสารระหว่างไคลเอนต์และเซิร์ฟเวอร์จากบรรทัดคำสั่ง

ความแตกต่างที่สำคัญระหว่างโมดูลอะซิงโครนัสและซิงโครนัสก็คือ “ แบบอะซิงโครนัส ” บล็อกการดำเนินการของซอร์สโค้ดจนกว่าจะไม่ได้ดำเนินการงานที่ระบุในขณะที่โมดูลซิงโครนัสดำเนินการรหัสทีละบรรทัดในลักษณะตามลำดับ

ติดตั้งโมดูล 'readline-sync'

ที่ “อ่านไลน์ซิงค์” โมดูลไม่ใช่โมดูลในตัว ดังนั้นจึงจำเป็นต้องติดตั้งด้วยตนเองโดยดำเนินการคำสั่งด้านล่าง:

npm ติดตั้ง readline - - ซิงค์

ผลลัพธ์แสดงให้เห็นว่าโมดูล readline-sync ได้รับการเพิ่มในโครงการ Node.js ปัจจุบัน:

ตอนนี้ใช้ ' Readline-ซิงค์ ” โมดูลในทางปฏิบัติโดยทำตามข้อมูลโค้ดที่กำหนด:

เคยเป็น readlineSync = จำเป็นต้อง ( 'อ่านไลน์ซิงค์' ) ;
เคยเป็น empName = readlineSync. คำถาม ( 'ชื่อพนักงาน: ' ) ;
เคยเป็น เจดี = readlineSync. คำถาม ( 'รายละเอียดงาน: ' ) ;
เคยเป็น บริษัท = readlineSync. คำถาม ( 'บริษัท: ' , {
} ) ;
คอนโซล บันทึก ( empName + ' ทำงานเป็น ' + เจดี + ' ใน ' + บริษัท ) ;

คำอธิบายของโค้ดข้างต้นมีดังนี้:

  • ประการแรก “ Readline-ซิงค์ ” โมดูลถูกนำเข้าภายในไฟล์และวัตถุถูกเก็บไว้ในตัวแปรใหม่ “ readlineSync '.
  • จากนั้น จะมีการถามคำถามโดยใช้คำสั่ง “ คำถาม ()” โดยระบุว่าเป็นอาร์กิวเมนต์
  • ใช้ขั้นตอนเดียวกันนี้ในการถามคำถามถัดไป
  • หลังจากนั้น “ console.log ()” ใช้เพื่อแสดงค่าที่ป้อนพร้อมกับสตริงที่ยกมา

เอาท์พุต

ดำเนินการ “ ดัชนี ไฟล์ .js”:

ดัชนีโหนด เจส

ผลลัพธ์แสดงให้เห็นว่าในลักษณะซิงโครนัส อินพุตจากผู้ใช้ได้ถูกนำไปใช้และแสดงโดยใช้เครื่องหมาย “ Readline-ซิงค์ ' โมดูล:

วิธีที่ 3: ยอมรับอินพุตจากบรรทัดคำสั่งโดยใช้โมดูล 'พร้อมท์'

พร้อมท์ ” เป็นโมดูลอะซิงโครนัสที่สร้างฟังก์ชันพร้อมต์เพื่อจัดเก็บอินพุตของผู้ใช้เป็นค่าของตัวแปร จากนั้นดึงข้อมูลเป็นเอาต์พุตผลลัพธ์ ไม่จำเป็นต้องกำหนดค่าสตรีมที่อ่านและเขียนได้อย่างชัดเจน นั่นเป็นสาเหตุที่ทำให้ใช้งานได้ค่อนข้างง่ายเมื่อเทียบกับ “ อ่านบรรทัด ' โมดูล.

ติดตั้งโมดูล 'พร้อมท์'

พร้อมท์ ” ยังเป็นโมดูลของบุคคลที่สามที่สามารถติดตั้งได้อย่างง่ายดายด้วยความช่วยเหลือของ “ เวลา 22.00 น ' ทางนี้:

พรอมต์การติดตั้ง npm -- บันทึก

ในคำสั่งข้างต้น “ -บันทึก ” ธงเพิ่ม “ พร้อมท์ ” โมดูลไปที่ “ แพ็คเกจ.json ' ไฟล์.

สามารถวิเคราะห์ได้ว่า “ พร้อมท์ ” ถูกเพิ่มในโครงการ Node.js ปัจจุบัน:

ตอนนี้ใช้การติดตั้ง “ พร้อมท์ ” โมดูลในทางปฏิบัติด้วยความช่วยเหลือของข้อมูลโค้ดต่อไปนี้:

ค่าคงที่ พร้อมท์ = จำเป็นต้อง ( 'พร้อมท์' )
พร้อมท์ เริ่ม ( )
พร้อมท์ รับ ( [ 'ชื่อผู้เขียน' , 'หมวดหมู่' ] , ( ผิดพลาด , ผลลัพธ์ ) => {
ถ้า ( ผิดพลาด ) {
โยน ผิดพลาด

} อื่น {
คอนโซล บันทึก ( `$ { ผลลัพธ์. ชื่อผู้แต่ง } ทำงานบน $ { ผลลัพธ์. หมวดหมู่ } ` )

}
} )

ในบล็อคโค้ดที่ระบุไว้ข้างต้น:

  • จำเป็นต้อง ()” วิธีการนำเข้า “ พร้อมท์ ” โมดูลเข้าสู่โครงการ
  • เริ่ม ()” วิธีการเริ่มต้นพร้อมท์
  • รับ ()” วิธีการรับอินพุตจากผู้ใช้ผ่านทางบรรทัดคำสั่ง โดยจะระบุชื่อคุณสมบัติและฟังก์ชันลูกศรเรียกกลับเป็นพารามิเตอร์ตัวแรกและตัวที่สอง
  • ฟังก์ชั่นการโทรกลับด้วย “ ผิดพลาด ' และ ' ผลลัพธ์ ” พารามิเตอร์กำหนด “ ถ้า-อย่างอื่น ' คำแถลง.
  • หากเกิดข้อผิดพลาดประการใดขึ้น “ ถ้า ” บล็อกจะโยนข้อผิดพลาดนั้นมิฉะนั้น “ อื่น ” บล็อกจะแสดงค่าของคุณสมบัติที่ระบุเป็นเอาท์พุท

เอาท์พุต

เรียกใช้ “ ดัชนี ไฟล์ .js”:

ดัชนีโหนด เจส

เอาต์พุตต่อไปนี้รับอินพุตของผู้ใช้ตามคุณสมบัติที่ระบุ จากนั้นดึงค่าเป็นเอาต์พุต:

วิธีที่ 4: ยอมรับอินพุตจากบรรทัดคำสั่งโดยใช้โมดูล 'ผู้สอบถาม'

ใน Node.js “ ผู้สอบถาม ” เป็นวิธีง่ายๆ ในการรับอินพุตจากบรรทัดคำสั่ง มันมาพร้อมกับวิธีการที่มีประโยชน์หลายประการในการรับอินพุตจากผู้ใช้แล้วส่งคืนเอาต์พุตโดยใช้คำสั่ง “ คำตอบ ” วัตถุ และ “ . แล้ว ()” วิธีการในตัว

มีประโยชน์สำหรับการถามคำถามประเภทต่างๆ จากผู้ใช้ผ่านทางบรรทัดคำสั่ง เช่น รายการ ตัวเลือก การป้อนข้อมูล ช่องทำเครื่องหมาย และอื่นๆ อีกมากมาย ซึ่งเป็นวิธีที่สะดวกในการทำให้อินเทอร์เฟซอินเทอร์เฟซบรรทัดคำสั่งโต้ตอบสำหรับงานที่อิงตามแบบสอบถาม

ปฏิบัติตามคำแนะนำโดยละเอียดเกี่ยวกับ “ รับอินพุตจากบรรทัดคำสั่งโดยใช้ Node.js Inquirer ” เพื่อการสาธิตการปฏิบัติจริง

เคล็ดลับ: จะส่งอาร์กิวเมนต์จาก Command Line ใน Node ได้อย่างไร

ผู้ใช้ยังสามารถส่งผ่านอาร์กิวเมนต์จากบรรทัดคำสั่งได้ เพื่อจุดประสงค์นี้ “ กระบวนการ.argv ” คุณสมบัติก็สามารถใช้ได้ “ หาเรื่อง ” เป็นคุณสมบัติในตัวของโมดูล “กระบวนการ” ที่ใช้ในการส่งผ่านข้อโต้แย้งจากบรรทัดคำสั่งในขณะที่เรียกใช้แอปพลิเคชัน Node.js โดยใช้คำสั่ง “ โหนด <ชื่อไฟล์> ' สั่งการ.

ปฏิบัติตามคำแนะนำโดยละเอียดเกี่ยวกับ “ ผ่านการโต้แย้งจาก Command Line ใน Node.js ” เพื่อการสาธิตการปฏิบัติจริง

นั่นคือทั้งหมดที่เกี่ยวกับการยอมรับอินพุตจากบรรทัดคำสั่งใน Node.js

บทสรุป

หากต้องการยอมรับอินพุตจากบรรทัดคำสั่ง ให้ใช้อะซิงโครนัส “ อ่านบรรทัด ” หรือซิงโครนัส “ Readline-ซิงค์ ' โมดูล. นอกจากนี้ยังสามารถทำได้ผ่าน “ พร้อมท์ ” หรือ “ ผู้สอบถาม ' โมดูล. ยกเว้น “ Redline-ซิงค์ ” โมดูลที่เหลือทั้งหมดเป็นแบบอะซิงโครนัส บทความนี้ได้กล่าวถึงวิธีการที่เป็นไปได้ทั้งหมดในการรับอินพุตจากบรรทัดคำสั่งใน Node.js