Обяснен обект на процес на възел

В processобекта в Node.js е глобален обект, който може да бъде достъпен в който и модул, без да го изискваща. Има много малко глобални обекти или свойства, предоставени в Node.js и processе един от тях. Това е съществен компонент в екосистемата Node.js, тъй като предоставя различни набори от информация за времето на изпълнение на програмата.

За изследване ще използваме едно от свойствата му, което се нарича process.versions. Това свойство ни казва информацията за версията на Node.js, която сме инсталирали. Трябва да се използва с -pфлаг.

$ 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' }

Друго свойство, което можете да проверите process.release, е същото като командата, $ node --versionкоято използвахме, когато инсталирахме Node.js. Но резултатът този път ще бъде по-подробен.

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

Това са някои от различните команди, които можем да използваме в командния ред за достъп до информация, която иначе не може да предостави нито един модул.

Този processобект е екземпляр на класа EventEmitter. Той съдържа собствени предварително дефинирани събития, като например, exitкоито могат да се използват, за да се знае кога програма в Node.js е завършила изпълнението си.

Стартирайте програмата по-долу и можете да забележите, че резултатът има код на състоянието 0. В Node.js този код на състоянието означава, че една програма е работила успешно.

process.on('exit', code => { setTimeout(() => { console.log('Will not get displayed'); }, 0); console.log('Exited with status code:', code); }); console.log('Execution Completed');

Резултат от горната програма:

Execution Completed Exited with status code: 0

Processсъщо така предоставя различни свойства за взаимодействие. Някои от тях могат да се използват в приложение Node, за да осигурят шлюз за комуникация между приложението Node и всеки интерфейс на командния ред. Това е много полезно, ако изграждате приложение или помощна програма от командния ред, използвайки Node.js

  • process.stdin: четим поток
  • process.stdout: поток за запис
  • process.stderr: изменяем поток за разпознаване на грешки

Използвайки argvвинаги можете да получите достъп до аргументи, които се предават в команден ред. argvе масив, който има Node като първи елемент и абсолютния път на файла като втори елемент. От третия елемент нататък може да има толкова аргументи, колкото искате.

Опитайте програмата по-долу, за да получите по-голяма представа за това как можете да използвате тези различни свойства и функции.

process.stdout.write('Hello World!' + '\n'); process.argv.forEach(function(val, index, array) { console.log(index + ': ' + val); });

Ако стартирате горния код със следната команда, ще получите изхода и първите два елемента са от argvса отпечатани.

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