Cauta rapid aici ↑

Aplicatie prin care poti trimite date direct din terminal

Nodejs ne ofera posibilitatea sa cream o conexiune dintre script-ul nostru si terminalul Nodejs. Modalitatea prin care acest lucru este posibil este strans legat de obiectul process. Obiectul process are in componenta lui doua obiecte copil ce contin metoda write cu care putem afisa diferite date in terminal. Aceste obiecte copil sunt stdin si stdout.

Sa presupunem ca vrem sa cream un script in care vor fi afisate diferite intrebari in terminal iar tot noi vom putea raspunde la ele. Totodata raspunsurile noastre vor putea fi salvate intr-un fisier text in momentul cand am raspuns la toate intrebarile. In acest caz vom avea nevoie si de modulul File System, modul incorporat in Nodejs, cu ajutorul caruia vom creea fisierul de tip text (sau orice tip de fisier) cu aspunsurile noastre.

Din moment ce raspunsurile noastre au legatura unele cu altele, pentru ca si intrebarile au legatura intre ele, atunci este mai bine sa alcatuim o propozitie cu aceste raspunsuri si apoi sa salvam propozitia in fisierul nou creat.

Mai jos este intreg script-ul care face acest lucru posibil. La realizarea lui am avut nevoie de cateva variabile cu denumiri semantice si care sa contina diferite informatii precum modulul File System incorporat in Nodejs, intrebarile noastre pe care le afisam in terminal, raspunsurile la intrebari si o variabila string ce va contine ulterior propozitia pe care o vom afisa la sfarsit in terminal dar o vom si adauga in fisierul text pe care il vom creea cu ajutorul metodei writeFileSync() ce va creea fisierul nostru in mod sincron.

Dupa cum se poate vedea in script, primul lucru pe care il vom face dupa ce am declarat variabilele este sa cream functia care va afisa prima intrebare urmand ca urmatoarele intrebari sa le afisam in functie de numarul de raspunsuri pe care le-am primit si adaugat in variabila raspunsuri. Functia noastra a avea un parametru si care la sfarsitul script-ului ii vom da o valoare numerica. Pentru a afisa intrebarea in terminal va trebui sa ne folosim de biectul process si mai apoi de obiectul copil din acesta, stdout, ce contine metoda write. Dupa cum se poate vedea m-am folosit de standardul ECMAScript 6, e este suportat mai mult sau mai putin incepand cu versiunea 4.0.0 Nodejs, pentru a insera a cata intrebare o doresc din variabila array intrebari.

Urmatorul pas in script este sa rulez o functie callback in momentul cand evenimentul data este declansat, iar acest eveniment este declansat in momentul cand sunt primite date sau in acest caz cand sunt inserate date in terminal. Primul lucru pe care il vom face in interiorul functiei callback este sa adaugam in array-ul raspunsuri datele ce sunt inserate si stocate ca parametru in functia callback. Pentru a le insera ca si valoare de tip string, va trebui sa ne folosim de metoda toString() pe parametrul functiei, dupa cum se poate vedea.

Mai departe vom adauga o structura conditionara if care va testa numarul de raspunsuri din array-ul raspunsuri cu numarul de intrebari din variabila intrebari si in cazul in care numarul raspunsurilor este mai mic decat numarul intrebarilor atunci inseamna ca mai avem intrebari de afisat si implicit raspunsuri de colectat.

Dupa ce am afisat toate intrebarile si am strans toate raspunsurile pe care le-am adaugat in variabila array raspunsuri, urmatorul pas este sa creeam propozitia noastra pe care o vom afisa in fisierul ce va fi creat obligatoriu in mod sincron. Este imperativ sa creeam in mod sincron fisierul nostru si nu in mod asincron pentru ca astfel nu va functiona (la data la care am creat script-ul) iar explicatia cea mai simpla este ca Nodejs lucreaza ca setare de baza numai in mod asincron incercand sa execute cat mai multe sarcini deodata.

In interiorul metodei writeFileSync vom putea avea pana la patru parametri. Primul parametru este reprezentat de un string ce contine numele si extensia fisierului dar poate fi si o cale relativa in director si in acest caz vom creea un fisier cu o anumita extensie intr-un director. Al doilea parametru este reprezentat de variabila string sau de un string ce va contine informatia text din fisier. Al treilea si al patrulea parametru sunt optionale. Al treilea parametru este reprezentat de codarea caracterelor si cel de-al patrulea caracter este reprezentat de o functie callback ce va primi un parametru reprezentand o eroare in cazul in care aceasta apare in momentul cand metoda writeFileSync este executata. Daca eroarea apare atunci o putem afisa in terminal sau nu. Putem afisa respectiva eroare printr-o structura conditionara if.

In acest punct al script-ului aproape am terminat iar singurele doua lucruri pe care le mai avem de facut este sa oprim acest proces in executie cu ajutorul metodei exit ce apartine direct obiectului process si care va declansa evenimentul exit, eveniment interceptat tot de catre obiectul process. Pe acest eveniment vom rula o functie care va afisa in terminal continutul variabilei string ce contine propozitia pe care am alcatuit-o cu raspunsurile noastre.