JavaScript

js process对象解惑

2018-01-16  本文已影响2357人  张培_

问题描述

//index.js
const isProduction = process.env.NODE_ENV === 'production'

//package.json
"scripts": {
    "test": "cross-env BABEL_DISABLE_CACHE=1 NODE_ENV=test ava",
    "build": "webpack --config webpack.config.prod.js  --progress --colors",
    "start": "webpack-dev-server --config webpack.config.js --progress --inline  --colors --port 1337 --host 0.0.0.0",
    "start:mock": "TARGET=http://localhost:8080 npm start",
    "deploy": "cross-env NODE_ENV=production ./node_modules/.bin/webpack --config ./webpack.config.prod.js"
  },

问题解答

全局对象(模块)

  • 在所有模块中都能使用的对象
  • 作用域是全局的
    • 比如export也是在所有模块中都能使用,但是作用域是当前模块

process对象

  • node.js中进程相关的对象
  • 是全局对象,因此你可以在code中的任何一个地方访问其对象中的属性,值都是一致的
  • 其中包含一些和进程以及nodejs运行环境相关的一些属性
    • process.env:返回用户运行环境对象
    • process.execArgv:返回Node的命令行参数数组
    • process.argv:一个当前执行进程折参数组,第一个参数是node,第二个参数是当前执行的.js文件名,之后是执行时设置的参数列表。
    • process.on():绑定事件
  - exit:进程退出事件
  - uncaughtException:包含没有捕获异常的时间
- process.nextTick()以及process.exit()等方法


console.log(env.TEST) //aaa
console.log(env.NODE_ENV) //local
return {
devtool: 'inline-source-map',
entry: {
vendor: [
'react',
'react-dom',
。。。
}
}
}
```
- 注意点:
- 如果你的服务是通过webpack-dev-server启动
- 如果直接在命令行中使用TEST=aa webpack-dev-server
- 那么就只能在webpack.config.js中的module.export回调函数中通过process.env.TEST访问到传入的值
- 而不能在code中访问到


上一篇下一篇

猜你喜欢

热点阅读