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 阻止javascript事件冒泡,获取控件ID值
Jun 27 Javascript
jquery分页插件AmSetPager(自写)
Apr 15 Javascript
JS小功能(button选择颜色)简单实例
Nov 29 Javascript
深入理解JavaScript系列(26):设计模式之构造函数模式详解
Mar 03 Javascript
javasript实现密码的隐藏与显示
May 08 Javascript
学习Angularjs分页指令
Jul 01 Javascript
JS输出空格的简单实现方法
Sep 08 Javascript
javascript兼容性(实例讲解)
Aug 15 Javascript
JS实现电商放大镜效果
Aug 24 Javascript
webpack4.x下babel的安装、配置及使用详解
Mar 07 Javascript
Vue组件基础用法详解
Feb 05 Javascript
JS实现电脑虚拟键盘的操作
Jun 24 Javascript
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提高网站效率的技巧
2015/09/29 PHP
php生成gif动画的方法
2015/11/05 PHP
PHP array_key_exists检查键名或索引是否存在于数组中的实现方法
2016/06/13 PHP
JavaScript 快捷键设置实现代码
2009/03/13 Javascript
fancybox modal的完美解决(右上的X)
2012/10/30 Javascript
jQuery EasyUI基础教程之EasyUI常用组件(推荐)
2016/07/15 Javascript
jQuery Password Validation密码验证
2016/12/30 Javascript
babel基本使用详解
2017/02/17 Javascript
在 Typescript 中使用可被复用的 Vue Mixin功能
2018/04/17 Javascript
vue-router命名路由和编程式路由传参讲解
2019/01/19 Javascript
你准备好迎接vue3.0了吗
2020/04/28 Javascript
怎么理解wx.navigateTo的events参数使用详情
2020/05/18 Javascript
vue实现放大镜效果
2020/09/17 Javascript
[01:01:18]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#2COL VS LGD
2016/03/03 DOTA
Python的迭代器和生成器使用实例
2015/01/14 Python
用Python写飞机大战游戏之pygame入门(4):获取鼠标的位置及运动
2015/11/05 Python
浅析Python中signal包的使用
2015/11/13 Python
python保存数据到本地文件的方法
2018/06/23 Python
Python定义一个跨越多行的字符串的多种方法小结
2018/07/19 Python
Selenium元素的常用操作方法分析
2018/08/10 Python
python中的逆序遍历实例
2019/12/25 Python
python两个_多个字典合并相加的实例代码
2019/12/26 Python
python3格式化字符串 f-string的高级用法(推荐)
2020/03/04 Python
Pycharm修改python路径过程图解
2020/05/22 Python
Python实现一个论文下载器的过程
2021/01/18 Python
python批量提取图片信息并保存的实现
2021/02/05 Python
突袭HTML5之Javascript API扩展3—本地存储全新体验
2013/01/31 HTML / CSS
h5使用canvas画布实现手势解锁
2019/01/04 HTML / CSS
英国在线自行车商店:Evans Cycles
2016/09/26 全球购物
Gretna Green中文官网:苏格兰格林小镇
2019/10/16 全球购物
C#里面可以避免一个类被其他类继承么?如何?
2013/09/26 面试题
业务员岗位职责
2013/11/16 职场文书
三年级科学教学反思
2014/01/29 职场文书
师德标兵事迹材料
2014/12/19 职场文书
六五普法先进个人主要事迹材料
2015/11/03 职场文书
高中物理教学反思
2016/02/19 职场文书