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 相关文章推荐
利用jQuery插件扩展识别浏览器内核与外壳的类型和版本的实现代码
Oct 22 Javascript
javascript全局变量封装模块实现代码
Nov 28 Javascript
PHP abstract与interface之间的区别
Nov 11 Javascript
简介JavaScript中fixed()方法的使用
Jun 08 Javascript
Bootstrap carousel轮转图的使用实例详解
May 17 Javascript
JavaScript toUpperCase()方法使用详解
Aug 26 Javascript
Bootstrap Navbar Component实现响应式导航
Oct 08 Javascript
ES6新特性之解构、参数、模块和记号用法示例
Apr 01 Javascript
angular.js和vue.js中实现函数去抖示例(debounce)
Jan 18 Javascript
vue中created和mounted的区别浅析
Aug 13 Javascript
浅谈Webpack4 Tree Shaking 终极优化指南
Nov 18 Javascript
vue-cli3.0修改打包后的文件名和文件地址,打包后本地运行报错解决
Apr 06 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
使用apache模块rewrite_module (转)
2007/02/14 PHP
解决ThinkPHP下使用上传插件Uploadify浏览器firefox报302错误的方法
2015/12/18 PHP
PHP中header用法小结
2016/05/23 PHP
遍历jquery对象的代码分享
2011/11/02 Javascript
jquery 实现两Select 标签项互调示例代码
2014/09/25 Javascript
深入探讨javascript中的数据类型
2015/03/04 Javascript
JavaScript实现页面跳转的方式汇总
2016/05/16 Javascript
JS扩展类,克隆对象与混合类实例分析
2016/11/26 Javascript
完美解决浏览器跨域的几种方法(汇总)
2017/05/08 Javascript
详解如何使用vue-cli脚手架搭建Vue.js项目
2017/05/19 Javascript
最常用的jQuery表单验证(简单)
2017/05/23 jQuery
AngularJs 禁止模板缓存的方法
2017/11/28 Javascript
vue中设置、获取、删除cookie的方法
2018/09/21 Javascript
小程序点击图片实现自动播放视频
2020/05/29 Javascript
对Layer弹窗使用及返回数据接收的实例详解
2019/09/26 Javascript
layui(1.0.9)文件上传upload,前后端的实例代码
2019/09/26 Javascript
vue大型项目之分模块运行/打包的实现
2020/09/21 Javascript
详解Vue中的自定义指令
2020/12/07 Vue.js
[01:01:24]LGD vs Fnatic 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python爬取读者并制作成PDF
2015/03/10 Python
Python中使用tarfile压缩、解压tar归档文件示例
2015/04/05 Python
Python中用于返回绝对值的abs()方法
2015/05/14 Python
python实现SMTP邮件发送功能
2020/06/16 Python
在python中使用正则表达式查找可嵌套字符串组
2017/10/24 Python
Sublime开发python程序的示例代码
2018/01/24 Python
Python操作Sqlite正确实现方法解析
2020/02/05 Python
DataFrame 数据合并实现(merge,join,concat)
2020/06/14 Python
美国求婚钻戒网站:Super Jeweler
2016/08/27 全球购物
巴西箱包、背包、钱包和旅行配件购物网站:Inovathi
2019/12/14 全球购物
世界经理人咨询有限公司面试
2014/09/23 面试题
2014年最新学校运动会广播稿
2014/09/17 职场文书
税务干部群众路线教育实践活动对照检查材料
2014/09/20 职场文书
2014年组织委员工作总结
2014/12/01 职场文书
本溪关门山导游词
2015/02/09 职场文书
机关干部纪律作风整顿心得体会
2016/01/23 职场文书
90行Python代码开发个人云盘应用
2021/04/20 Python