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 相关文章推荐
javascript document.execCommand() 常用解析
Dec 14 Javascript
JQuery下的Live方法和$.browser方法使用代码
Jun 02 Javascript
jquery实现居中弹出层代码
Aug 25 Javascript
JavaScript中的this实例分析
Apr 28 Javascript
在js中判断checkboxlist(.net控件客户端id)是否有选中
Apr 11 Javascript
js脚本获取webform服务器控件的方法
May 16 Javascript
JavaScript Promise启示录
Aug 12 Javascript
node.js中的fs.renameSync方法使用说明
Dec 16 Javascript
JavaScript实现同一页面内两个表单互相传值的方法
Aug 12 Javascript
vue双花括号的使用方法 附练习题
Nov 07 Javascript
vue实现计算器功能
Feb 22 Javascript
手写Vue2.0 数据劫持的示例
Mar 04 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
漫荒推荐:画风超赞的国风漫画推荐 超长假期不无聊
2020/03/08 国漫
迅雷下载《中学科技》怀旧期刊下载
2021/02/27 无线电
Wordpress php 分页代码
2009/10/21 PHP
用PHP实现小写金额转换大写金额的代码(精确到分)
2012/01/10 PHP
php排序算法(冒泡排序,快速排序)
2012/10/09 PHP
php数组去重复数据示例
2014/02/25 PHP
wampserver改变默认网站目录的办法
2015/08/05 PHP
JS是否可以跨文件同时控制多个iframe页面的应用技巧
2007/12/16 Javascript
JavaScript asp.net 获取当前超链接中的文本
2009/04/14 Javascript
jQuery帮助之CSS尺寸(五)outerHeight、outerWidth
2009/11/14 Javascript
文件编码导致jquery失效的解决方法
2013/06/26 Javascript
JavaScript之数组(Array)详解
2015/04/01 Javascript
jQuery qrcode生成二维码的方法
2016/04/03 Javascript
vue-cli脚手架build目录下utils.js工具配置文件详解
2018/09/14 Javascript
vue实现压缩图片预览并上传功能(promise封装)
2019/01/10 Javascript
Python元组操作实例分析【创建、赋值、更新、删除等】
2017/07/24 Python
Python利用Django如何写restful api接口详解
2018/06/08 Python
numpy判断数值类型、过滤出数值型数据的方法
2018/06/09 Python
python学习之hook钩子的原理和使用
2018/10/25 Python
python获取微信小程序手机号并绑定遇到的坑
2018/11/19 Python
Django管理员账号和密码忘记的完美解决方法
2018/12/06 Python
详解python调用cmd命令三种方法
2019/07/08 Python
安纳塔拉酒店度假村及水疗官方网站:Anantara Hotel
2016/08/25 全球购物
基督教卡片、励志礼品、家居装饰等:DaySpring
2018/10/12 全球购物
德国的大型美妆个护电商:Flaconi
2020/06/26 全球购物
报关简历自我评价怎么写
2013/09/19 职场文书
毕业生个人求职信范文分享
2014/01/05 职场文书
合同协议书格式
2014/04/18 职场文书
2014年度个人工作总结
2014/11/07 职场文书
2014年维修工作总结
2014/11/22 职场文书
2016父亲节感恩话语
2015/12/09 职场文书
中国式结婚:司仪主持词(范文)
2019/07/25 职场文书
导游词之镇江-金山寺
2019/10/14 职场文书
Redis缓存-序列化对象存储乱码问题的解决
2021/06/21 Redis
oracle删除超过N天数据脚本的方法
2022/02/28 Oracle
Vue.js中v-for指令的用法介绍
2022/03/13 Vue.js