Hvordan godta input fra kommandolinjen i Node.js?

Hvordan Godta Input Fra Kommandolinjen I Node Js



Node.js er et velkjent åpen kildekode gratis JavaScript-runtime-miljø som lar brukere kjøre JavaScript-koden fra en fil eller direkte fra kommandolinjen. Å kjøre en JavaScript-kode fra en fil krever en ekstern '. js ” filkommando mens kommandolinjen kjører JavaScript-koden direkte linje for linje.

Noen ganger må brukeren konfigurere informasjonen mens han starter Node.js-applikasjonen fra kommandolinjen via ' node '. I en slik situasjon må brukeren sende den informasjonen direkte som input med utførelseskommandoen i stedet for å skrive den inn i '. js ' fil.







Denne oppskriften vil diskutere alle mulige metoder for å akseptere input fra kommandolinjen i Node.js.



Hvordan godta input fra kommandolinjen i Node.js?

Node.js tilbyr følgende moduler for å akseptere input fra kommandolinjen:



La oss starte med ' leselinje ' modul.





Forutsetninger : Før du går videre til den praktiske implementeringen av en metode, må du først opprette en '. js ” fil med et hvilket som helst navn og skriv all kildekoden til den. Her har vi laget en ' indeks .js'-filen.

Metode 1: Godta inndata fra kommandolinjen ved å bruke 'readline'-modulen

« leselinje ”-modulen oppretter et grensesnitt for å lese brukerinndata fra den lesbare strømmen og returnere responsen som den resulterende utgangen. Det er en innebygd modul slik at brukeren kan importere den direkte til Node.js-applikasjonen uten å installere den ved å bruke ' npm '.



I dette scenariet brukes det til å ta inndata fra kommandolinjen og deretter skrive det ut på utdataskjermen. Her er den praktiske gjennomføringen:

konst leselinje = krever ( 'leselinje' )
konst rl = leselinje. lage grensesnitt ( {
input : prosess. stdin ,
produksjon : prosess. stdout
} )
rl. spørsmål ( `Beste plattform til teknisk innhold ? ` , nettsted => {
rl. spørsmål ( `Hvilken kategori du ønsker å utforske ? ` , kategori => {
konsoll. Logg ( `Nettsted : $ { nettsted } , Kategori : $ { kategori } ` )
rl. Lukk ( )
} )
} )

Beskrivelsen av kodelinjene ovenfor er som følger:

  • For det første, ' krever ()»-metoden importerer « leselinje ”-modul i det gjeldende Node.js-prosjektet.
  • Deretter ' lage grensesnitt ()»-metoden spesifiserer « input' og 'output ” strømmer som et objekt. « input '-strømmen bruker ' process.stdin ” egenskap for å ta innspill fra brukeren.
  • « produksjon '-strømmen bruker ' process.stdout ”-egenskap for å lese inngangsstrømmen og skrive den ut som standard utdata for den gitte inngangsstrømmen.
  • Etter det, ' rl.spørsmål ()»-metoden tar innspill fra brukeren. Den sender spørsmålet som første og tilbakeringingsfunksjonen som det andre argumentet. Den gitte tilbakeringingspilfunksjonen henter de brukerangitte verdiene.
  • I definisjonen av det gitte ' nettsted ', og ' kategori ' tilbakeringingspilfunksjonen, ' console.log ()»-metoden brukes til å vise de angitte verdiene.
  • Til slutt, ' rl.lukk ()»-metoden lukker grensesnittet ovenfor.

Produksjon

Start ' indeks .js'-filen ved å utføre den angitte kommandoen:

nodeindeks. js

Følgende utdata viser et leselinjegrensesnitt som tar brukerinndata fra kommandolinjen og deretter viser den angitte verdien som standardutdata:

Metode 2: Godta inndata fra kommandolinjen ved å bruke 'readline-sync'-modulen

« leselinje-synkronisering ” er tredjepartsmodulen som synkront henter informasjonen knyttet til hardkodede spørsmål og lagrer tilsvarende svar for fremtidige operasjoner. Den fungerer som en kommunikasjon mellom klienten og serveren fra kommandolinjen.

Hovedforskjellen mellom asynkrone og synkrone moduler er at ' asynkron ” blokkerer kjøringen av kildekoden til den spesifiserte oppgaven ikke utføres, mens de synkrone modulene kjører koden linje for linje på en sekvensiell måte.

Installer 'readline-sync'-modulen

De 'leselinje-synkronisering' Modulen er ikke en innebygd modul, så den må installeres manuelt ved å utføre kommandoen nedenfor:

npm installer leselinje - synkronisere

Utdataene viser at readline-sync-modulen er lagt til det nåværende Node.js-prosjektet:

Bruk nå ' leselinje-synkronisering ”-modul praktisk talt ved å følge den gitte kodebiten:

var readlineSync = krever ( 'readline-sync' ) ;
var empName = readlineSync. spørsmål ( 'Ansattes navn: ' ) ;
var jd = readlineSync. spørsmål ( 'Stillingsbeskrivelse: ' ) ;
var selskap = readlineSync. spørsmål ( 'Selskap: ' , {
} ) ;
konsoll. Logg ( empName + 'fungerer som' + jd + 'i' + selskap ) ;

Forklaringen av koden ovenfor er som følger:

  • Først, ' leselinje-synkronisering '-modulen importeres i filen og objektet lagres i en ny variabel ' readlineSync '.
  • Deretter blir spørringen spurt ved hjelp av ' spørsmål ()»-metoden ved å spesifisere den som argumentet.
  • Samme prosedyre brukes for å stille de neste spørsmålene.
  • Etter det, ' console.log ()»-metoden brukes til å vise de angitte verdiene sammen med den angitte strengen.

Produksjon

Utfør ' indeks .js'-fil:

nodeindeks. js

Utdataene viser at på en synkron måte, er input fra brukere tatt og vist ved å bruke ' leselinje-synkronisering ' modul:

Metode 3: Godta inndata fra kommandolinjen ved å bruke 'prompt'-modulen

« ledetekst ” er en asynkron modul som lager en spørrefunksjon for å lagre brukerinndata som variabelens verdi og deretter hente den som den resulterende utdata. Den trenger ikke å konfigurere den lesbare og skrivbare strømmen eksplisitt, det er derfor den er ganske enkel å bruke sammenlignet med ' leselinje ' modul.

Installer 'prompt'-modulen

« ledetekst ' er også en tredjepartsmodul som enkelt kan installeres ved hjelp av ' npm ' på denne måten:

npm installasjonsmelding -- lagre

I kommandoen ovenfor, ' -lagre ' flagget legger til ' ledetekst '-modulen til ' package.json ' fil.

Det kan analyseres at ' ledetekst ' har blitt lagt til det nåværende Node.js-prosjektet:

Bruk nå den installerte ' ledetekst ”-modul praktisk talt ved hjelp av følgende kodebit:

konst ledetekst = krever ( 'spørre' )
ledetekst. start ( )
ledetekst. ( [ 'authorName' , 'Kategori' ] , ( feil , resultat ) => {
hvis ( feil ) {
kaste feil

} ellers {
konsoll. Logg ( `$ { resultat. forfatternavn } fungerer på $ { resultat. Kategori } ` )

}
} )

I kodeblokken ovenfor:

  • « krever ()»-metoden importerer « ledetekst ”-modulen inn i prosjektet.
  • « start ()»-metoden starter ledeteksten.
  • « ()»-metoden tar innspill fra brukeren via kommandolinjen. Den spesifiserer egenskapsnavnene og tilbakeringingspilfunksjonen som første og andre parameter.
  • Tilbakeringingsfunksjonen med ' feil ' og ' resultat ' parametere definerer en ' hvis-annet ' uttalelse.
  • Hvis det oppstår en type feil, vil ' hvis '-blokken vil gi den feilen ellers ' ellers ”-blokken vil vise verdiene til de spesifiserte egenskapene som en utdata.

Produksjon

Kjør ' indeks .js'-fil:

nodeindeks. js

Følgende utdata tar brukerinndata basert på de spesifiserte egenskapene og henter deretter verdiene deres som utdata:

Metode 4: Godta inndata fra kommandolinjen ved å bruke 'inquirer'-modulen

I Node.js er ' spørre ” er en enkel måte å ta innspill fra kommandolinjen. Den kommer med flere nyttige metoder for å ta innspill fra brukere og deretter returnere utdataene ved å bruke ' svar '-objektet og '. deretter ()» innebygd metode.

Det er nyttig for å stille forskjellige typer spørsmål fra brukeren gjennom kommandolinjen som liste, alternativer, inndata, avmerkingsbokser og mye mer. Det gir en praktisk måte å gjøre kommandolinjegrensesnittet interaktivt for spørringsbaserte oppgaver.

Følg den detaljerte veiledningen på ' Ta inndata fra kommandolinjen ved å bruke Node.js Inquirer ' for praktisk demonstrasjon.

Tips: Hvordan sende argumenter fra kommandolinjen i noden?

Brukeren kan også sende argumenter fra kommandolinjen. For dette formålet ' process.argv ” eiendom kan brukes. « argv ' er den innebygde egenskapen til 'prosess'-modulen som brukes til å sende argumentene fra kommandolinjen mens du kjører Node.js-applikasjonen med ' node ' kommando.

Følg den detaljerte veiledningen på ' Send argumenter fra kommandolinjen i Node.js ' for praktisk demonstrasjon.

Det handler om å akseptere input fra kommandolinjen i Node.js.

Konklusjon

For å godta inndata fra kommandolinjen, bruk den asynkrone ' leselinje ', eller den synkrone ' leselinje-synkronisering ' modul. Dessuten kan det også utføres gjennom ' ledetekst ' eller ' spørre ' modul. Bortsett fra ' redline-synkronisering ”-modul, alle de resterende modulene er asynkrone. Denne oppskriften har diskutert alle mulige metoder for å akseptere input fra kommandolinjen i Node.js.