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 相关文章推荐
pjblog中的UBBCode.js
Apr 25 Javascript
用JS实现的一个include函数
Jul 21 Javascript
javascript获得服务器端控件的ID的实现代码
Dec 28 Javascript
javascript unicode与GBK2312(中文)编码转换方法
Nov 14 Javascript
Jquery 获取对象的几种方式介绍
Jan 17 Javascript
JS方法调用括号的问题探讨
Jan 24 Javascript
jQuery on方法传递参数示例
Dec 09 Javascript
Javascript基础教程之数据类型 (数值 Number)
Jan 18 Javascript
DOM 高级编程
May 06 Javascript
Javascript连接Access数据库完整实例
Aug 03 Javascript
jquery获取table指定行和列的数据方法(当前选中行、列)
Nov 07 Javascript
jQuery设置下拉框显示与隐藏效果的方法分析
Sep 15 jQuery
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延迟静态绑定示例分享
2014/06/22 PHP
php单态设计模式(单例模式)实例
2014/11/18 PHP
php的闭包(Closure)匿名函数初探
2016/02/14 PHP
extjs 学习笔记 四 带分页的grid
2009/10/20 Javascript
JavaScript高级程序设计 读书笔记之十一 内置对象Global
2012/03/07 Javascript
jquery实现动态菜单的实例代码
2013/11/28 Javascript
jquery UI Datepicker时间控件的使用及问题解决
2016/04/28 Javascript
jQuery实现圣诞节礼物传送(花式轮播)
2016/12/25 Javascript
Vue.js系列之项目结构说明(2)
2017/01/03 Javascript
react实现pure render时bind(this)隐患需注意!
2017/03/09 Javascript
jquery实现简单实用的轮播器
2017/05/23 jQuery
详解Angular2 之 结构型指令
2017/06/21 Javascript
angularjs实现table增加tr的方法
2018/02/27 Javascript
微信小程序开发之自定义tabBar的实现
2018/09/06 Javascript
vue 表单之通过v-model绑定单选按钮radio
2019/05/13 Javascript
详解如何探测小程序返回到webview页面
2019/05/14 Javascript
实用Javascript调试技巧分享(小结)
2019/06/18 Javascript
浅析Angular 实现一个repeat指令的方法
2019/07/21 Javascript
Vue使用axios引起的后台session不同操作
2020/08/14 Javascript
vue使用keep-alive实现组件切换时保存原组件数据方法
2020/10/30 Javascript
python实现的简单文本类游戏实例
2015/04/28 Python
使用Python对IP进行转换的一些操作技巧小结
2015/11/09 Python
Python实现线程状态监测简单示例
2018/03/28 Python
python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix实现
2018/06/11 Python
5分钟 Pipenv 上手指南
2018/12/20 Python
Python 下载及安装详细步骤
2019/11/04 Python
Python3 Tkinkter + SQLite实现登录和注册界面
2019/11/19 Python
Avène雅漾美国官方网站:敏感肌肤护理专家
2016/10/24 全球购物
de Bijenkorf比利时官网:荷兰最知名的百货商店
2017/06/29 全球购物
世界上最好的精品店:Shoptiques
2018/02/05 全球购物
浙大毕业生自荐信
2014/01/26 职场文书
学校志愿者活动总结
2014/06/27 职场文书
外贸业务员岗位职责
2015/02/13 职场文书
微信小程序实现录音Record功能
2021/05/09 Javascript
MySQL如何构建数据表索引
2021/05/13 MySQL
10大幻兽系恶魔果实 蝙蝠果实上榜,第一自愈能力强
2022/03/18 日漫