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 版
Mar 24 Javascript
Javascript 遮罩层和加载效果代码
Aug 01 Javascript
Js和JQuery获取鼠标指针坐标的实现代码分享
May 25 Javascript
不依赖Flash和任何JS库实现文本复制与剪切附源码下载
Oct 09 Javascript
详解JavaScript的回调函数
Nov 20 Javascript
JS鼠标拖拽实例分析
Nov 23 Javascript
AngularJS基础 ng-class-odd 指令示例
Aug 01 Javascript
jQuery查找dom的几种方法效率详解
May 17 jQuery
vue-awesome-swiper滑块插件使用方法详解
Nov 27 Javascript
vue图片上传组件使用详解
Dec 23 Javascript
vue-video-player 解决微信自动全屏播放问题(横竖屏导致样式错乱问题)
Feb 25 Javascript
Vue实现简单计算器
Jan 20 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
DSP接收机前端设想
2021/03/02 无线电
?生?D片??C字串
2006/12/06 PHP
深入理解PHP中的Session和Cookie
2013/06/21 PHP
php中return的用法实例分析
2015/02/28 PHP
PHP在线书签系统分享
2016/01/04 PHP
将nodejs打包工具整合到鼠标右键的方法
2013/05/11 NodeJs
jquery实现简单易懂的图片展示小例子
2013/11/21 Javascript
JavaScript关闭当前页面(窗口)不带任何提示
2014/03/26 Javascript
JavaScript中判断整字类型最简洁的实现方法
2014/11/08 Javascript
浅谈EasyUI中编辑treegrid的方法
2015/03/01 Javascript
JavaScript通过字符串调用函数的实现方法
2015/03/18 Javascript
浅析JavaScript中的对象类型Object
2016/05/26 Javascript
基于JS如何实现类似QQ好友头像hover时显示资料卡的效果(推荐)
2016/06/09 Javascript
JS制作适用于手机和电脑的通知信息效果
2016/10/28 Javascript
详解AngularJS 模块化
2017/06/14 Javascript
js实现省市级联效果分享
2017/08/10 Javascript
Vue.js 实现微信公众号菜单编辑器功能(一)
2018/05/08 Javascript
jQuery控制input只能输入数字和两位小数的方法
2019/05/16 jQuery
JavaScript 反射和属性赋值实例解析
2019/10/28 Javascript
JS实现排行榜文字向上滚动轮播效果
2019/11/26 Javascript
js对象简介与基本用法示例
2020/03/13 Javascript
js实现3D旋转效果
2020/08/18 Javascript
[05:34]2014DOTA2国际邀请赛中国区预选赛精彩TOPPLAY第二弹
2014/06/25 DOTA
[09:47]2018DOTA2亚洲邀请赛4.5SOLO赛 No[o]ne vs Sumail
2018/04/06 DOTA
python实现将汉字转换成汉语拼音的库
2015/05/05 Python
Python的Flask框架及Nginx实现静态文件访问限制功能
2016/06/27 Python
python实现校园网自动登录的示例讲解
2018/04/22 Python
Python 普通最小二乘法(OLS)进行多项式拟合的方法
2018/12/29 Python
keras 如何保存最佳的训练模型
2020/05/25 Python
解决H5的a标签的download属性下载service上的文件出现跨域问题
2019/07/16 HTML / CSS
英国第一家领先的在线处方眼镜零售商:Glasses Direct
2018/02/23 全球购物
I.T集团香港官方商城:ITeSHOP.com Hong Kong
2019/02/15 全球购物
Wallis官网:英国女装零售商
2020/01/21 全球购物
洗煤厂厂长岗位职责
2014/01/03 职场文书
促销活动总结报告
2014/04/26 职场文书
父亲婚礼答谢词
2015/01/04 职场文书