process obiectul din Node.js este un obiect global care poate fi accesat în interiorul oricărui modul fără a fi necesar. Există foarte puține obiecte sau proprietăți globale furnizate în Node.js și process este unul dintre ei. Este o componentă esențială în ecosistemul Node.js, deoarece oferă diverse seturi de informații despre timpul de rulare al unui program.

Pentru a explora vom folosi una dintre proprietățile sale, numită process.versions. Această proprietate ne spune informațiile despre versiunea Node.js pe care am instalat-o. Trebuie folosit împreună cu -p steag.

$ node  -p "process.versions"

# output
{ http_parser: '2.8.0',
  node: '8.11.2',
  v8: '6.2.414.54',
  uv: '1.19.1',
  zlib: '1.2.11',
  ares: '1.10.1-DEV',
  modules: '57',
  nghttp2: '1.29.0',
  napi: '3',
  openssl: '1.0.2o',
  icu: '60.1',
  unicode: '10.0',
  cldr: '32.0',
  tz: '2017c' }

O altă proprietate pe care o puteți verifica este process.release același lucru cu comanda $ node --version pe care le-am folosit când am instalat Node.js. Dar rezultatul de această dată va fi mai detaliat.

node -p "process.release"

# output
{ name: 'node',
  lts: 'Carbon',
  sourceUrl: 'https://nodejs.org/download/release/v8.11.2/node-v8.11.2.tar.gz',
  headersUrl: 'https://nodejs.org/download/release/v8.11.2/node-v8.11.2-headers.tar.gz' }

Acestea sunt câteva dintre diferitele comenzi pe care le putem folosi într-o linie de comandă pentru a accesa informații pe care altfel niciun modul nu le poate furniza.

Acest process obiect este o instanță a clasei EventEmitter. Conține propriile evenimente predefinite, cum ar fi exit care poate fi folosit pentru a ști când un program din Node.js și-a finalizat execuția.

Rulați programul de mai jos și puteți observa că rezultatul vine cu codul de stare 0. În Node.js acest cod de stare înseamnă că un program a rulat cu succes.

process.on('exit', code => {
	setTimeout(() => {
		console.log('Will not get displayed');
	}, 0);

	console.log('Exited with status code:', code);
});
console.log('Execution Completed');

Rezultatul programului de mai sus:

Execution Completed
Exited with status code: 0

Process oferă, de asemenea, diverse proprietăți cu care puteți interacționa. Unele dintre ele pot fi utilizate într-o aplicație Node pentru a oferi o poartă de comunicare între aplicația Node și orice interfață de linie de comandă. Acest lucru este foarte util dacă creați o aplicație sau un utilitar de linie de comandă folosind Node.js

  • process.stdin: un flux lizibil
  • process.stdout: un flux care poate fi scris
  • process.stderr: un flux wriatabil pentru a recunoaște erorile

Folosind argv puteți accesa întotdeauna argumente care sunt transmise într-o linie de comandă. argv este un tablou care are Nodul însuși ca primul element și calea absolută a fișierului ca al doilea element. Începând cu al treilea element poate avea atâtea argumente pe cât doriți.

Încercați programul de mai jos pentru a obține mai multe informații despre modul în care puteți utiliza aceste diferite proprietăți și funcții.

process.stdout.write('Hello World!' + 'n');

process.argv.forEach(function(val, index, array) {
	console.log(index + ': ' + val);
});

Dacă rulați codul de mai sus cu următoarea comandă, veți obține rezultatul și primele două elemente sunt de argv sunt tipărite.

$ node test.js

# output
Hello World!
0: /usr/local/bin/node
1: /Users/amanhimself/Desktop/articles/nodejs-text-tuts/test.js