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 
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```
							 |