云计算 网站建设,国家企业公示信息查询官网,电子商务企业网站的推广方式,门窗 东莞网站建设文章目录 内置模块process写在前面1. arch()2. cwd()3. argv4. memoryUsage()5. exit()6. kill()7. env【最常用】 内置模块process
写在前面
process是Nodejs操作当前进程和控制当前进程的API#xff0c;并且是挂载到globalThis下面的全局API。
下面是process的一些常用AP… 文章目录 内置模块process写在前面1. arch()2. cwd()3. argv4. memoryUsage()5. exit()6. kill()7. env【最常用】 内置模块process
写在前面
process是Nodejs操作当前进程和控制当前进程的API并且是挂载到globalThis下面的全局API。
下面是process的一些常用API
序号API作用1process.arch跟之前的os.arch()一样 获取操作系统位数【cpu架构】2process.cwd()返回当前端工作目录 和__dirname类似 但是esm模式下是用不了__dirname的 可以用cwd()代替3process.argvargv属性返回一个数组其中包含启动Node.js进程时传递的命令行参数。第一个元素将是execPath。第二个元素是要执行的JavaScript文件的路径。剩下的元素将是任何附加的命令行参数。4process.memoryUsage返回内存信息5process.exit()实现进程强制退出6process.kill()和process.exit()类似 杀死进程 需要一个参数pid 即进程id 使用process.pid获取7process.env【最常用】获取操作系统所有的环境变量 最常用的一个属性
1. arch()
process.arch() 跟之前学的os.arch()一样用于获取操作系统位数【或者说是cpu架构】。
const process require(process);
console.log(process.arch); // x642. cwd()
process.cwd() 返回当前端工作目录和__dirname类似但是esm模式下是用不了__dirname的这种情况下就可以使用process.cwd()代替它来使用了。
const process require(process);
console.log(__dirname); // C:\Users\22706\Desktop\temp
console.log(process.cwd()); // C:\Users\22706\Desktop\temp3. argv
process.argv属性会返回一个数组其中包含启动Node.js进程时传递的命令行参数。第一个元素将是execPath。第二个元素是要执行的JavaScript文件的路径。剩下的元素将是任何附加的命令行参数。
const process require(process);
console.log(process.argv); // [D:\\nodejs\\node.exe, C:\\Users\\22706\\Desktop\\temp\\process.js]
// 这里测试输入命令行的额外参数 --version 如果有--version就输出1.0.0 否则输出无
console.log(process.argv.includes(--version) ? 1.0.0 : 无);代码测试结果如下 可以看到只要命令增加了额外的参数使用process.argv输出的数组的第三个元素开始将会是命令增加的额外参数值。
4. memoryUsage()
process.memoryUsage()会返回电脑内存相关的信息。
const process require(process);
console.log(process.memoryUsage());/**
{ 运行结果rss: 21495808, // 常驻集大小 物理内存的存量heapTotal: 5263360, // v8给我们分配的堆内存的总大小 包括未使用的内存heapUsed: 4609688, // 已经使用的内存external: 347074, // 外部的内存 C C使用的arrayBuffers: 19406 // 二进制的总量
}
*/5. exit()
process.exit() 实现进程的强制退出。
比如有一个5s的定时器5s结束会自动退出进程另外有个2s的定时器2s的定时器的回调内调用process.exit()实现强制退出则不会再等待5s的定时器结束再结束进程测试代码如下
const process require(process);
setTimeout(() {console.log(5); // 输出5
}, 5000);setTimeout(() {console.log(进程退出了);process.exit(); // 强制退出进程 不再等待上一个定时器输出5
}, 2000);测试结果如下 可以看到进程并没有等待5s后输出结果5而是2s后输出进程退出了。
另外process还可以通过Apion监听进程退出
const process require(process);
setTimeout(() {console.log(5);
}, 5000);setTimeout(() {console.log(进程退出了);process.exit(); // 强制退出进程 不再等待上一个定时器输出5
}, 2000);process.on(exit, () {// 监听进程结束console.log(进程退出了);
});代码运行结果如下
6. kill()
process.kill() 和process.exit()类似杀死进程它需要一个参数pid, 即进程id,使用process.pid获取进程id。
const process require(process);
setTimeout(() {console.log(5);
}, 5000);setTimeout(() {process.kill(process.pid); // 强制退出进程 不再等待上一个定时器输出5
}, 2000);运行结果和process.exit()一样。
7. env【最常用】
process.env用于获取操作系统所有的环境变量它是process模块最常用的一个属性。
并且可以通过它修改环境变量但是修改只在当前进程生效并不会真正影响系统的环境变量。
const process require(process);
console.log(process.env); // 输出一大堆电脑配好的环境变量
console.log(process.env.VSCODE_INJECTION); // 1
process.env.VSCODE_INJECTION 2270633333; // 测试修改环境变量
console.log(process.env.VSCODE_INJECTION); // 2270633333学习环境变量有什么用呢
最常见的用途就比如根据环境变量区分是开发环境还是生产环境 从而判断接口请求是使用http协议还是https协议
我们经常使用webpack vite等构建工具都会下载一个第三方库 cross-env 通过这个第三方库设置对应环境变量。
安装完成后我们就可以在package.json中设置对应脚本
scripts: {dev: cross-env NODE_ENVdevelopment node process.js,build: cross-env NODE_ENVproduction node process.js
}上面的脚本实现了运行脚本npm run dev后cross-env会设置名为NODE_ENV的环境变量值为development并运行脚本node process.js在node环境下运行上面的process.js文件运行npm run build同理实现了运行不同脚本从而通过NODE_ENV来设置不同环境变量值当然环境变量名不一定都得取NODE_NEV可以自定义随意取。
下面我们执行脚本npm run dev测试结果如下 cross-env的原理就是如果是windows就调用set如果是posix就调用export设置环境变量
set NODE_ENVproduction # windows
export NODE_ENVproduction # posix因此使用第三方模块cross-env不需要考虑兼容性问题。
参考博客https://xiaoman.blog.csdn.net/article/details/132654000?spm1001.2014.3001.5502