כיצד לקבל קלט משורת הפקודה ב-Node.js?

Kyzd Lqbl Qlt Mswrt Hpqwdh B Node Js



Node.js היא סביבת זמן ריצה של JavaScript ללא קוד פתוח ידועה המאפשרת למשתמשים לבצע את קוד ה-JavaScript מקובץ או ישירות משורת הפקודה. הפעלת קוד JavaScript מקובץ דורשת '. js ” הפקודה file בעוד שורת הפקודה מבצעת את קוד ה-JavaScript ישירות שורה אחר שורה.

לפעמים, המשתמש צריך להגדיר את המידע תוך כדי הפעלת היישום Node.js משורת הפקודה דרך ' node<שם קובץ> '. במצב כזה, המשתמש צריך להעביר את המידע הזה ישירות כקלט עם פקודת הביצוע במקום לכתוב אותו ב-'. js 'קובץ.







כתיבה זו תדון בכל השיטות האפשריות לקבל קלט משורת הפקודה ב-Node.js.



כיצד לקבל קלט משורת הפקודה ב-Node.js?

Node.js מציע את המודולים הבאים כדי לקבל קלט משורת הפקודה:



בואו נתחיל עם ' קריאת שורה ' מודול.





דרישות מוקדמות : לפני המעבר ליישום המעשי של כל שיטה, תחילה צור '. js ” קובץ בכל שם וכתוב לו את כל קוד המקור. כאן, יצרנו ' אינדקס קובץ js.

שיטה 1: קבל קלט משורת הפקודה באמצעות מודול 'קו הקריאה'.

ה ' קריאת שורה מודול יוצר ממשק לקריאת קלט המשתמש מהזרם הניתן לקריאה והחזרת תגובתו כפלט שנוצר. זהו מודול מובנה כך שהמשתמש יכול לייבא אותו ישירות ליישום Node.js מבלי להתקין אותו באמצעות ' npm '.



בתרחיש זה, הוא משמש כדי לקחת את הקלט משורת הפקודה ולאחר מכן להדפיס אותו במסך הפלט. להלן היישום המעשי שלו:

const קריאת שורה = לִדרוֹשׁ ( 'קריאת שורה' )
const rl = קריאת שורה. ליצור ממשק ( {
קֶלֶט : תהליך. סטדין ,
תְפוּקָה : תהליך. stdout
} )
rl. שְׁאֵלָה ( `הפלטפורמה הטובה ביותר ל תוכן טכני ? ` , אתר אינטרנט => {
rl. שְׁאֵלָה ( `איזו קטגוריה תרצה לחקור ? ` , קטגוריה => {
לְנַחֵם. עֵץ ( `אתר : $ { אתר אינטרנט } , קטגוריה : $ { קטגוריה } ` )
rl. סגור ( )
} )
} )

התיאור של שורות הקוד לעיל הוא כדלקמן:

  • ראשית, ה' לִדרוֹשׁ שיטת ()' מייבאת את ה-' קריאת שורה מודול בפרויקט Node.js הנוכחי.
  • לאחר מכן, ה' ליצור ממשק שיטת ()' מציינת את ' קלט' ו'פלט ” זורם כאובייקט. ה ' קֶלֶט זרם משתמש ב- process.stdin ” מאפיין לקליטת קלט מהמשתמש.
  • ה ' תְפוּקָה זרם משתמש ב-' process.stdout ” מאפיין לקריאת זרם הקלט והדפסתו כפלט הסטנדרטי של זרם הקלט הנתון.
  • לאחר מכן, ה' rl.שאלה שיטת ()' לוקחת את הקלט מהמשתמש. הוא מעביר את השאלה כראשונה ואת פונקציית ה-callback כארגומנט השני שלו. פונקציית חץ ההתקשרות הנתונה מאחזרת את הערכים שהוזנו על ידי המשתמש.
  • בהגדרת הנתון ' אתר אינטרנט ', וה ' קטגוריה ' פונקציית חץ החזרה, ה' console.log שיטת ()' משמשת להצגת הערכים שהוזנו.
  • לבסוף, ה' rl.close ()' שיטת סוגרת את הממשק שנוצר לעיל.

תְפוּקָה

ליזום את ' אינדקס .js' על ידי ביצוע הפקודה שסופקה:

אינדקס צומת. js

הפלט הבא מציג ממשק readline שלוקח את קלט המשתמש משורת הפקודה ולאחר מכן מציג את הערך שהוזן כפלט הסטנדרטי:

שיטה 2: קבל קלט משורת הפקודה באמצעות מודול 'סנכרון קו קריאה'.

ה ' סנכרון קו readline ” הוא מודול הצד השלישי המאחזר באופן סינכרוני את המידע הקשור לשאלות מקודדות קשיח ומאחסן את התשובות המתאימות שלהם לפעולות עתידיות. זה פועל כתקשורת בין הלקוח לשרת משורת הפקודה.

ההבדל העיקרי בין מודולים אסינכרוניים לסינכרוניים הוא ש' אסינכרוני ” חוסם את ביצוע קוד המקור עד שהמשימה המצוינת שלו לא מבוצעת ואילו המודולים הסינכרוניים מבצעים את הקוד שורה אחר שורה באופן רציף.

התקן את מודול 'readline-sync'.

ה 'סנכרון קו קריאה' מודול אינו מודול מובנה, ולכן יש להתקין אותו באופן ידני על ידי ביצוע הפקודה הבאה:

npm להתקין readline - סינכרון

הפלט מראה שמודול הסנכרון הקריאה התווסף לפרויקט ה-Node.js הנוכחי:

כעת, השתמש ב' סנכרון קו readline ' מודול למעשה על ידי ביצוע קטע הקוד הנתון:

היה readlineSync = לִדרוֹשׁ ( 'סנכרון קו קריאה' ) ;
היה empName = readlineSync. שְׁאֵלָה ( 'שם העובד: ' ) ;
היה jd = readlineSync. שְׁאֵלָה ( 'תיאור משרה: ' ) ;
היה חֶברָה = readlineSync. שְׁאֵלָה ( 'חברה:' , {
} ) ;
לְנַחֵם. עֵץ ( empName + 'עובד בתור' + jd + 'ב' + חֶברָה ) ;

ההסבר של הקוד לעיל הוא כדלקמן:

  • קודם ה ' סנכרון קו readline ' מודול מיובא בתוך הקובץ והאובייקט שלו מאוחסן במשתנה חדש ' readlineSync '.
  • לאחר מכן, השאילתה נשאלת בעזרת ' שְׁאֵלָה ()' על ידי ציון זה כארגומנט.
  • אותו הליך משמש לשאלת השאלות הבאות.
  • לאחר מכן, ה' console.log שיטת ()' משמשת להצגת הערכים שהוזנו יחד עם המחרוזת במירכאות.

תְפוּקָה

בצע את ' אינדקס קובץ ‎.js”:

אינדקס צומת. js

הפלט מראה שבאופן סינכרוני, הקלט מהמשתמשים נלקח והוצג באמצעות ' סנכרון קו readline ' מודול:

שיטה 3: קבל קלט משורת הפקודה באמצעות מודול 'פקודה'.

ה ' מיידי ” הוא מודול אסינכרוני שיוצר פונקציית הנחיה לאחסן את קלט המשתמש כערך המשתנה ולאחר מכן לאחזר אותו כפלט שנוצר. זה לא צריך להגדיר את הזרם הקריא והניתן לכתיבה במפורש ולכן זה די קל לשימוש בהשוואה ל' קריאת שורה ' מודול.

התקן את מודול 'הנחיה'.

ה ' מיידי ' הוא גם מודול של צד שלישי שניתן להתקין בקלות בעזרת ' npm ' בדרך זו:

הודעת התקנה של npm -- להציל

בפקודה לעיל, ' -להציל ' הדגל מוסיף את ' מיידי מודול ל' package.json 'קובץ.

ניתן לנתח כי ' מיידי ' נוסף לפרויקט ה-Node.js הנוכחי:

כעת, השתמש ב' המותקן ' מיידי ' מודול למעשה בעזרת קטע הקוד הבא:

const מיידי = לִדרוֹשׁ ( 'מיידי' )
מיידי. הַתחָלָה ( )
מיידי. לקבל ( [ 'שם המחבר' , 'קטגוריה' ] , ( לִטְעוֹת , תוֹצָאָה ) => {
אם ( לִטְעוֹת ) {
לזרוק לִטְעוֹת

} אַחֵר {
לְנַחֵם. עֵץ ( `$ { תוֹצָאָה. שם המחבר } עובד על $ { תוֹצָאָה. קטגוריה } ` )

}
} )

בגוש הקוד שצוין לעיל:

  • ה ' לִדרוֹשׁ שיטת ()' מייבאת את ' מיידי ' מודול לתוך הפרויקט.
  • ה ' הַתחָלָה שיטת ()' מתחילה את ההנחיה.
  • ה ' לקבל שיטת ()' לוקחת את הקלט מהמשתמש דרך שורת הפקודה. הוא מציין את שמות המאפיינים ואת פונקציית החץ חזרה כפרמטר הראשון והשני.
  • פונקציית ההתקשרות חזרה עם ' לִטְעוֹת ' ו' תוֹצָאָה ' פרמטרים מגדירים ' אחרת 'הצהרה.
  • אם מתרחשת שגיאה כלשהי, ה-' אם ' בלוק יזרוק את השגיאה הזו אחרת ' אַחֵר ' בלוק יציג את הערכים של המאפיינים שצוינו כפלט.

תְפוּקָה

הפעל את ' אינדקס קובץ ‎.js”:

אינדקס צומת. js

הפלט הבא לוקח את קלט המשתמש בהתבסס על המאפיינים שצוינו ואז מאחזר את הערכים שלהם כפלט:

שיטה 4: קבל קלט משורת הפקודה באמצעות מודול 'המשאל'.

ב-Node.js, ה-' שואל ' היא דרך קלה לקחת את הקלט משורת הפקודה. זה מגיע עם מספר שיטות שימושיות לקחת קלט ממשתמשים ואז להחזיר את הפלט באמצעות ' תשובה ' האובייקט ואת '. לאחר מכן ()' השיטה המובנית.

זה שימושי לשאלת סוגים שונים של שאלות מהמשתמש דרך שורת הפקודה כגון רשימה, אפשרויות, קלט, תיבות סימון ועוד הרבה יותר. הוא מספק דרך נוחה להפוך את ממשק שורת הפקודה לאינטראקטיבי עבור משימות מבוססות שאילתות.

עקוב אחר המדריך המפורט על ' קח קלט משורת הפקודה באמצעות Node.js Inquirer ' להדגמה מעשית.

טיפ: כיצד להעביר טיעונים משורת הפקודה בצומת?

המשתמש יכול גם להעביר ארגומנטים משורת הפקודה. לצורך כך, ה' process.argv ניתן להשתמש בנכס. ה ' argv ' הוא המאפיין המובנה של מודול 'process' המשמש להעברת הארגומנטים משורת הפקודה תוך הפעלת היישום Node.js באמצעות ' node<שם קובץ> ' פקודה.

עקוב אחר המדריך המפורט על ' העבר טיעונים משורת הפקודה ב-Node.js ' להדגמה מעשית.

זה הכל לגבי קבלת קלט משורת הפקודה ב-Node.js.

סיכום

כדי לקבל את הקלט משורת הפקודה, השתמש ב'אסינכרוני' קריאת שורה ', או הסינכרוני ' סנכרון קו readline ' מודול. יתר על כן, ניתן לבצע אותו גם באמצעות ' מיידי ' או ה ' שואל ' מודול. חוץ מ ה ' סנכרון קו אדום ' מודול, כל המודולים הנותרים הם אסינכרוניים. כתיבה זו דנה בכל השיטות האפשריות לקבל קלט משורת הפקודה ב-Node.js.