Nodejs 第十三章(process)

214 阅读3分钟

process的基本使用

基本介绍

  • processs 是操作当前进程和控制当前进程的API, 是挂载到gobalThis Node全局的API

基本是使用

1.process.arch

  • process.arch 是获取操作系统 CPU 架构跟我们之前讲的 OS.arch 一样

    process.arch // x64
    
    • 它返回的可能值有:
      • 'arm'、'arm64''ia32''mips''mipsel''ppc'`、
      • 'ppc64''s390''s390x''x64'

2.process.cwd()

  • process.cwd() 返回当前项目的根目录

  • 与CJS中的__dirname不同的是:

    • __dirname 返回的是当前执行文件的位置

    • 例如:当前路径 D://node/process/utils/index.js

      __dirname // D://node/process/utils
      process.cwd() // D://node/process
      

3.process.argv

  • process.argv 获取到执行进程的后面的参数 返回的是一个数组,其实这个命令一般用于各种工具库

    • 例如:webpack vite roullup gulp 等构建工具
  • 一般我们写一些插件也可以使用到该属性

  • 数组里面第一个返回的是你node.exe 执行文件

  • 数组里面第二个返回的就是你 当前执行文件的位置的绝对路径

  • 数组第三个参数甚至后面更多的参数 都是用户自定义的

4.process.memoryUsage()

  • process.memoryUsage 是获取当前进程内存的使用情况,该方法返回的是一个对象

  • rss (Resident Set Size,常驻大小),heapTotal(堆区总大小)

  • heapUsed(已用堆大小) external(外部内存使用量)

  • arrayBuffers 是处理二进制数据的,跟踪由 Node.js Buffer 和 TypedArray(如 Uint8ArrayFloat32Array 等)等数组缓冲区对象占用的内存量。

    • 这些对象通常用于处理二进制数据,如文件操作、网络通信(如 WebSocket 消息)、图像处理等场景。

5.process.exit()

  • process.exit() 这个方法是退出当前进程的

  • 例如:我设置了一个定时器 2秒后执行 当我使用该方法他将退出当前进程

    setTimeout(() => {
      console.log('吃饭了!!!'); // 此时不会执行
    }, 2000);
    
    process.exit(); // 退出了进程
    
    // 退出进程之后的事件
    process.on('exit',()=>{
      console.log('进程结束了')  // 进程结束了
    })
    

6.process.kill()

  • process.kill 杀掉某个进程这个方法与 process.exit 类似,但是不同的是process.kill 接受一个进程id进行退出

  • 例如:

    setTimeout(()=>{
      console.log('执行开始了')
      process.kill(process.pid)
        console.log('执行结束')
    },1000)
    
    setTimeout(()=>{
      console.log('执行开始了1111')
    },1500)
    // 最终结果 当杀掉进程之后后面的代码都不会执行
    

7.process.env

  • process.env 用于读取操作系统所有的环境变量,也可以修改和查询环境变量。

  • 注意: 修改的环境变量只在当前线程有效,不会影响到全局,线程结束和释放

    process.env.HOME = 'YES'
    

环境变量场景

当我们在开发过程中比如接口、代码、样式 需要做环境的区分,其实也就用到node中process.env

推荐使用 cross-env

npm install  cross-env

package.jsonscripts中自定义 cross-env node执行命令 多个环境变量使用corss-env 隔开

{
  "name": "06-node-process",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "dev":"cross-env NODE_ENV=dev cross-env NODE_PATH='/'      node ./utils/main.js",
    "pro":"cross-env NODE_ENV=pro cross-env NODE_PATH='/home'  node ./utils/main.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "cross-env": "^7.0.3"
  }
}

npm run dev

底层其实就是:

set NODE_ENV=dev   #windows
export NODE_ENV=dev #posix

注意:里面设置的环境变量都是临时的,当前线程关闭,环境变量也会被释放

windows 持久化

setx NODE_ENV production /M

posix持久化

要使环境变量设置持久化,你需要将其添加到 shell 的配置文件中。这取决于你使用的 shell 和你想要设置的范围(仅对当前用户还是对所有用户)。

对于 bash 用户

  1. 仅对当前用户:编辑 ~/.bashrc~/.bash_profile(取决于你的系统配置和个人喜好)。
  2. 对所有用户:编辑 /etc/profile/etc/environment(但请注意,直接编辑这些全局文件可能需要管理员权限,并且可能会影响系统上所有用户的环境)。
export NODE_ENV= dev #posix