89 lines
5.2 KiB
Markdown
89 lines
5.2 KiB
Markdown
|
---
|
|||
|
title: Process Object
|
|||
|
localeTitle: Объект процесса
|
|||
|
---
|
|||
|
## Объект процесса
|
|||
|
|
|||
|
Объект `process` в Node.js является глобальным объектом, доступ к которому возможен в любом модуле, не требуя его. В Node.js имеется очень мало глобальных объектов или свойств, и `process` является одним из них. Это важный компонент в экосистеме Node.js, поскольку он предоставляет различные наборы информации о времени выполнения программы. Для изучения мы будем использовать один из его свойств, который называется `process.versions` . Это свойство сообщает нам информацию о версии Node.js, которую мы установили. Он должен использоваться с флагом `-p` .
|
|||
|
|
|||
|
```shell
|
|||
|
$ 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, но выход на этот раз будет более подробным.
|
|||
|
|
|||
|
```shell
|
|||
|
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' }
|
|||
|
```
|
|||
|
|
|||
|
Это некоторые из различных команд, которые мы можем использовать в командной строке для доступа к информации, иначе модуль не может предоставить. Этот объект `process` является экземпляром класса EventEmitter, и он содержит свои собственные заранее определенные события, такие как `exit` которые могут быть использованы, чтобы знать, когда программа в Node.js завершила выполнение. Запустите программу ниже, и вы можете заметить, что в результате появляется код состояния `0` . В Node.js этот код состояния означает, что программа успешно выполнена.
|
|||
|
|
|||
|
```js
|
|||
|
process.on('exit', code => {
|
|||
|
setTimeout(() => {
|
|||
|
console.log('Will not get displayed');
|
|||
|
}, 0);
|
|||
|
|
|||
|
console.log('Exited with status code:', code);
|
|||
|
});
|
|||
|
console.log('Execution Completed');
|
|||
|
```
|
|||
|
|
|||
|
Результат вышеуказанной программы:
|
|||
|
|
|||
|
```shell
|
|||
|
Execution Completed
|
|||
|
Exited with status code: 0
|
|||
|
```
|
|||
|
|
|||
|
`Process` также предоставляет различные свойства для взаимодействия. Некоторые из них могут использоваться в приложении Node для предоставления шлюза для связи между приложением Node и любым интерфейсом командной строки. Это очень полезно, если вы создаете приложение командной строки или утилиту с помощью Node.js
|
|||
|
|
|||
|
* process.stdin: читаемый поток
|
|||
|
* process.stdout: записываемый поток
|
|||
|
* process.stderr: wriatable stream для распознавания ошибок
|
|||
|
|
|||
|
Используя `argv` вы всегда можете получить доступ к аргументам, которые передаются в командной строке. `argv` - это массив, который имеет сам узел как первый элемент и абсолютный путь файла в качестве второго элемента. С третьего элемента он может иметь столько аргументов.
|
|||
|
|
|||
|
Попробуйте программу ниже, чтобы получить больше информации о том, как вы можете использовать эти различные свойства и функции.
|
|||
|
|
|||
|
```js
|
|||
|
process.stdout.write('Hello World!' + '\n');
|
|||
|
|
|||
|
process.argv.forEach(function(val, index, array) {
|
|||
|
console.log(index + ': ' + val);
|
|||
|
});
|
|||
|
```
|
|||
|
|
|||
|
Если вы запустите указанный выше код с помощью следующей команды, вы получите вывод и первые два элемента из `argv` будут напечатаны.
|
|||
|
|
|||
|
```shell
|
|||
|
$ node test.js
|
|||
|
|
|||
|
# output
|
|||
|
Hello World!
|
|||
|
0: /usr/local/bin/node
|
|||
|
1: /Users/amanhimself/Desktop/articles/nodejs-text-tuts/test.js
|
|||
|
|
|||
|
```
|