Node.js je dobre známe open-source bezplatné prostredie JavaScript runtime, ktoré umožňuje používateľom spúšťať kód JavaScript zo súboru alebo priamo z príkazového riadku. Spustenie kódu JavaScript zo súboru vyžaduje externý súbor „. js ” súbor, zatiaľ čo príkazový riadok spúšťa kód JavaScript priamo riadok po riadku.
Používateľ niekedy potrebuje nakonfigurovať informácie pri spúšťaní aplikácie Node.js z príkazového riadka cez „ uzol
Tento zápis bude diskutovať o všetkých možných metódach prijatia vstupu z príkazového riadku v Node.js.
Ako prijať vstup z príkazového riadku v Node.js?
Node.js ponúka nasledujúce moduly na prijímanie vstupu z príkazového riadku:
- Pomocou modulu „readline“.
- Použitie modulu „readline-sync“.
- Použitie „výzvového“ modulu
- Pomocou modulu „dopytovateľ“.
Začnime s „ readline “.
Predpoklady : Pred prechodom na praktickú implementáciu akejkoľvek metódy najprv vytvorte súbor „. js ” súbor s ľubovoľným názvom a zapíšte doň celý zdrojový kód. Tu sme vytvorili „ index .js“.
Metóda 1: Prijmite vstup z príkazového riadka pomocou modulu „readline“.
' readline ” modul vytvára rozhranie na čítanie užívateľského vstupu z čitateľného toku a vrátenie jeho odpovede ako výsledného výstupu. Ide o vstavaný modul, takže ho používateľ môže importovať priamo do aplikácie Node.js bez inštalácie pomocou „ npm “.
V tomto scenári sa používa na prevzatie vstupu z príkazového riadka a jeho vytlačenie na výstupnej obrazovke. Tu je jeho praktická implementácia:
konšt readline = vyžadovať ( 'readline' )konšt rl = readline. createInterface ( {
vstup : proces. stdin ,
výkon : proces. stdout
} )
rl. otázka ( „Najlepšia platforma pre technický obsah ? ` , webovej stránky => {
rl. otázka ( „Ktorú kategóriu by ste chceli preskúmať? ? ` , kategórii => {
konzola. log ( `Webová stránka : $ { webovej stránky } , Kategória : $ { kategórii } ` )
rl. Zavrieť ( )
} )
} )
Popis vyššie uvedených riadkov kódu je nasledujúci:
- Po prvé, „ vyžadovať ()“ metóda importuje „ readline ” v aktuálnom projekte Node.js.
- Ďalej, „ createInterface ()“ metóda špecifikuje „ vstup“ a „výstup “ prúdi ako objekt. ' vstup “stream používa “ proces.stdin ” vlastnosť na prevzatie vstupu od používateľa.
- ' výkon “stream využíva “ proces.stdout ” vlastnosť na čítanie vstupného toku a jeho tlač ako štandardný výstup daného vstupného toku.
- Potom sa „ rl.otázka ()“ metóda preberá vstup od používateľa. Otázku odovzdá ako prvý a funkciu spätného volania ako druhý argument. Daná funkcia šípky spätného volania načíta hodnoty zadané používateľom.
- V definícii daného „ webovej stránky “ a „ kategórii funkcia šípky spätného volania, funkcia konzola.log ()“ metóda sa používa na zobrazenie zadaných hodnôt.
- Nakoniec, „ rl.zavrieť ()” metóda zatvorí vyššie vytvorené rozhranie.
Výkon
Iniciovať „ index .js” vykonaním poskytnutého príkazu:
index uzla. jsNasledujúci výstup zobrazuje rozhranie čítacieho riadku, ktoré preberá vstup používateľa z príkazového riadku a potom zobrazuje zadanú hodnotu ako štandardný výstup:
Metóda 2: Prijmite vstup z príkazového riadka pomocou modulu „readline-sync“.
' readline-sync “ je modul tretej strany, ktorý synchrónne získava informácie súvisiace s pevne zakódovanými otázkami a ukladá ich zodpovedajúce odpovede pre budúce operácie. Funguje ako komunikácia medzi klientom a serverom z príkazového riadku.
Hlavný rozdiel medzi asynchrónnymi a synchrónnymi modulmi je v tom, že „ asynchrónne ” blokuje vykonávanie zdrojového kódu, kým sa nevykoná jeho špecifikovaná úloha, zatiaľ čo synchrónne moduly vykonávajú kód riadok po riadku sekvenčným spôsobom.
Nainštalujte modul „readline-sync“.
The „readline-sync“ modul nie je vstavaný modul, takže je potrebné ho nainštalovať manuálne vykonaním nižšie uvedeného príkazu:
npm install readline - synchronizáciaVýstup ukazuje, že modul readline-sync bol pridaný do aktuálneho projektu Node.js:
Teraz použite „ readline-sync ” modul prakticky podľa daného útržku kódu:
bol readlineSync = vyžadovať ( 'readline-sync' ) ;bol empName = readlineSync. otázka ( 'Meno zamestnanca: ' ) ;
bol jd = readlineSync. otázka ( 'Popis práce: ' ) ;
bol spoločnosti = readlineSync. otázka ( 'Spoločnosť:' , {
} ) ;
konzola. log ( empName + 'funguje ako' + jd + ' v ' + spoločnosti ) ;
Vysvetlenie vyššie uvedeného kódu je nasledovné:
- Po prvé, „ readline-sync “ modul sa importuje do súboru a jeho objekt sa uloží do novej premennej “ readlineSync “.
- Ďalej je dotaz položený pomocou „ otázka ()” tak, že ju špecifikujete ako argument.
- Rovnaký postup sa používa pri kladení ďalších otázok.
- Potom sa „ konzola.log ()” metóda sa používa na zobrazenie zadaných hodnôt spolu s reťazcom v úvodzovkách.
Výkon
Vykonajte „ index súbor .js:
index uzla. jsVýstup ukazuje, že synchrónnym spôsobom sa vstup od používateľov prevzal a zobrazil pomocou „ readline-sync modul:
Metóda 3: Prijmite vstup z príkazového riadka pomocou modulu „výzva“.
' výzva “ je asynchrónny modul, ktorý vytvára funkciu výzvy na uloženie vstupu používateľa ako hodnoty premennej a jeho následné získanie ako výsledný výstup. Nie je potrebné explicitne konfigurovať čitateľný a zapisovateľný stream, preto je jeho použitie celkom jednoduché v porovnaní s „ readline “.
Nainštalujte „výzvový“ modul
' výzva “ je tiež modul tretej strany, ktorý možno jednoducho nainštalovať pomocou „ npm ' touto cestou:
výzva na inštaláciu npm -- uložiťVo vyššie uvedenom príkaze „ – uložiť “ vlajka pridáva „ výzva „modul do „ package.json “.
Dá sa analyzovať, že „ výzva ” bol pridaný do aktuálneho projektu Node.js:
Teraz použite nainštalovaný „ výzva ” modul prakticky pomocou nasledujúceho útržku kódu:
konšt výzva = vyžadovať ( 'prompt' )výzva. začať ( )
výzva. dostať ( [ 'authorName' , 'kategória' ] , ( chybovať , výsledok ) => {
ak ( chybovať ) {
hodiť chybovať
} inak {
konzola. log ( `$ { výsledok. meno autora } funguje na $ { výsledok. Kategória } ` )
}
} )
Vo vyššie uvedenom bloku kódu:
- ' vyžadovať ()“ metóda importuje „ výzva ” modul do projektu.
- ' začať ()” metóda spustí výzvu.
- ' dostať ()” metóda preberá vstup od používateľa cez príkazový riadok. Špecifikuje názvy vlastností a funkciu šípky spätného volania ako prvý a druhý parameter.
- Funkcia spätného volania s „ chybovať “ a „ výsledok ” parametre definujú “ ak-inak “vyhlásenie.
- Ak sa vyskytne akýkoľvek typ chyby, potom sa zobrazí „ ak 'blok vyvolá túto chybu, inak sa ' inak ” blok zobrazí hodnoty zadaných vlastností ako výstup.
Výkon
Spustite „ index súbor .js:
index uzla. jsNasledujúci výstup prevezme vstup používateľa na základe špecifikovaných vlastností a potom získa ich hodnoty ako výstup:
Metóda 4: Prijmite vstup z príkazového riadku pomocou modulu „dopytovateľ“.
V Node.js je „ pýtajúci sa “ je jednoduchý spôsob, ako prevziať vstup z príkazového riadku. Dodáva sa s niekoľkými užitočnými metódami, ako prevziať vstup od používateľov a potom vrátiť výstup pomocou „ odpoveď “objekt a “. potom ()“ vstavaná metóda.
Je to užitočné pri kladení rôznych typov otázok používateľovi prostredníctvom príkazového riadka, ako je zoznam, možnosti, vstup, začiarkavacie políčka a mnoho ďalších. Poskytuje pohodlný spôsob, ako urobiť rozhranie príkazového riadka interaktívnym pre úlohy založené na dotazoch.
Postupujte podľa podrobného sprievodcu na „ Prevezmite vstup z príkazového riadka pomocou Node.js Inquirer “ na praktickú ukážku.
Tip: Ako odovzdať argumenty z príkazového riadku v Node?
Používateľ môže tiež zadať argumenty z príkazového riadku. Na tento účel sa „ proces.argv ” možno použiť. ' argv “ je vstavaná vlastnosť modulu „process“, ktorá sa používa na odovzdávanie argumentov z príkazového riadka pri spustení aplikácie Node.js pomocou „ uzol
Postupujte podľa podrobného sprievodcu na „ Odovzdajte argumenty z príkazového riadku v Node.js “ na praktickú ukážku.
To je všetko o prijímaní vstupu z príkazového riadku v Node.js.
Záver
Ak chcete prijať vstup z príkazového riadka, použite asynchrónny „ readline “, alebo synchrónny „ readline-sync “. Okrem toho to možno vykonať aj prostredníctvom „ výzva ' alebo ' pýtajúci sa “. Okrem „ redline-sync “, všetky zostávajúce moduly sú asynchrónne. Tento zápis rozobral všetky možné metódy na prijatie vstupu z príkazového riadku v Node.js.