Node.js中process模块常用的属性和方法


Posted in Javascript onDecember 13, 2016

前言

虽然node对操作系统做了很多抽象的工作,但是你还是可以直接和他交互,比如和系统中已经存在的进程进行交互,创建工作子进程。node是一个用于事件循环的线程,但是你可以在这个事件循环之外创建其他的进程(线程)参与工作。

如果不是和命令行工具打交道,可能我们很少有机会去用到process模块中的一些方法或者属性。不过如果你要做类似于webpack或者gulp等较为复杂的构建工具,由于bash界面就是和用户直接交流的工具,因此友好的输入输出,完整的提示都非常有必要了。

属性

一张表格大概可以看到process有哪些属性

属性名称 用途
platform 判断当前系统平台
argv 当前进程的命令行参数数组
execPath 当前进程的可执行文件的绝对路径
stdout 指向标准输出
stdin 指向标准输入
stderr 指向标准错误
stderr 指向标准错误

我们可以直接在代码中这样使用

console.log(porcess.platform) 
// darwin

使用argv 会返回命令行的数组,我们可以通过数组来获取用户具体的命令

console.log(process.argv); 
// [ '/usr/local/bin/node', '/Users/ali-130257n/www/weex-jackzoo/projects/demo.js', '-p', '-v' ]

一般情况下,我们更想获取最后的一些参数,前面两个不需要,我们可以

let args = process.argv.slice(2); 
console.log(args)

// [ '-p', '-v' ]

方法

process 提供的方法有很多。大致我们可以用到的有下面一些。

     cwd:返回运行当前脚本的工作目录的路径

     abort:立即结束进程

     nextTick: 指定下次事件循环首先运行的任务

process 支持的一些事件,通过一些事件,我们可做一些友好的提示或者处理。

     uncaughtException:当前进程抛出一个没有被捕捉的意外时,会触发uncaughtException事件

     message: 接受来自父进程的消息

     rejectionHandled:用于捕获与它关联的promise错误处理并且产生的reject

     unhandledRejection: 同理这个便是用于捕获没有与之关联promise错误处理的reject

const unhandledRejections = new Map(); 
process.on('unhandledRejection', (reason, p) => { 
 unhandledRejections.set(p, reason);
});
process.on('rejectionHandled', (p) => { 
 unhandledRejections.delete(p);
});

warning: 当前进程产生一个警告的时候出发

process.on('warning', (warning) => { 
 console.warn(warning.name); // Print the warning name
 console.warn(warning.message); // Print the warning message
 console.warn(warning.stack); // Print the stack trace
});

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

Javascript 相关文章推荐
js对象与打印对象分析比较
Apr 23 Javascript
IE8下String的Trim()方法失效的解决方法
Nov 08 Javascript
jQuery实现仿淘宝带有指示条的图片转动切换效果完整实例
Mar 04 Javascript
Node.js开发者必须了解的4个JS要点
Feb 21 Javascript
JS面向对象(3)之Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法
Feb 25 Javascript
JS+CSS3制作炫酷的弹窗效果
Nov 08 Javascript
JavaScript mixin实现多继承的方法详解
Mar 30 Javascript
vue中轮训器的使用
Jan 27 Javascript
Vue 设置axios请求格式为form-data的操作步骤
Oct 29 Javascript
jQuery操作动画完整实例分析
Jan 10 jQuery
JS FormData对象使用方法实例详解
Feb 12 Javascript
vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)
Mar 01 Vue.js
Angular ng-repeat遍历渲染完页面后执行其他操作详细介绍
Dec 13 #Javascript
node.js 和HTML5开发本地桌面应用程序
Dec 13 #Javascript
AngularJS中$apply方法和$watch方法用法总结
Dec 13 #Javascript
vue.js学习之递归组件
Dec 13 #Javascript
AngularJS过滤器filter用法总结
Dec 13 #Javascript
ES6通过babel转码使用webpack使用import关键字
Dec 13 #Javascript
AngularJS服务service用法总结
Dec 13 #Javascript
You might like
用PHP连接Oracle for NT 远程数据库
2006/10/09 PHP
PHP extract 将数组拆分成多个变量的函数
2010/06/30 PHP
php多用户读写文件冲突的解决办法
2013/11/06 PHP
PHP递归实现层级树状展开
2016/04/01 PHP
基于Laravel5.4实现多字段登录功能方法示例
2017/08/11 PHP
ThinkPHP框架整合微信支付之刷卡模式图文详解
2019/04/10 PHP
laravel通过a标签从视图向控制器实现传值
2019/10/15 PHP
php 中self,this的区别和操作方法实例分析
2019/11/04 PHP
javascript 处理HTML元素必须避免使用的一种方法
2009/07/30 Javascript
JavaScript 函数replace深入了解
2013/03/14 Javascript
JavaScript 上万关键字瞬间匹配实现代码
2013/07/07 Javascript
JS获取浏览器语言动态加载JS文件示例代码
2014/10/31 Javascript
jQuery中;function($,undefined) 前面的分号的用处
2014/12/17 Javascript
jQuery检查事件是否触发的方法
2015/06/26 Javascript
js编写当天简单日历效果【实现代码】
2016/05/03 Javascript
AngularJS  ng-repeat遍历输出的用法
2017/06/19 Javascript
JS实现快速比较两个字符串中包含有相同数字的方法
2017/09/11 Javascript
详解Node.js利用node-git-server快速搭建git服务器
2017/09/27 Javascript
webpack打包nodejs项目的方法
2018/09/26 NodeJs
详解基于node.js的脚手架工具开发经历
2019/01/28 Javascript
js实现复制粘贴的两种方法
2020/12/04 Javascript
[57:59]完美世界DOTA2联赛循环赛 Ink Ice vs LBZS BO2第一场 11.05
2020/11/05 DOTA
python实现井字棋游戏
2020/03/30 Python
Flask框架web开发之零基础入门
2018/12/10 Python
python3中property使用方法详解
2019/04/23 Python
Django密码存储策略分析
2020/01/09 Python
python中 _、__、__xx__()区别及使用场景
2020/06/30 Python
MoviePy简介及Python视频剪辑自动化
2020/12/18 Python
Python实现简单猜数字游戏
2021/02/03 Python
纯CSS3实现3D旋转书本效果
2016/03/21 HTML / CSS
安全的后院和健身蹦床:JumpSport
2019/07/15 全球购物
主题实践活动总结
2014/05/08 职场文书
委托书格式
2014/08/01 职场文书
毕业生就业推荐表导师评语
2014/12/31 职场文书
第二次离婚起诉书
2015/05/18 职场文书
如何判断pytorch是否支持GPU加速
2021/06/01 Python