1122-什么是node & 区分环境变量

什么是node?

node的安装

nvm

  • node版本管理工具,可切换node版本号

nrm npm源管理工具

  • nrm list
  • nrm use cnpm ; nrm use taobao...

node是运行时,之所以可以直接控制台运行 node,是因为添加到了环境变量

  • add to path

用node运行一个js文件

  • 控制台中直接运行
node a.js
复制代码
  • 在编辑器中使用node
IDE设置支持node环境设置
复制代码

nodejs特点

  • 主线程是单线程异步。通过callback实现异步。
  • 非阻塞、异步I/o,能用异步 绝不同步
  • event-driven事件驱动-发布订阅模式

###web前端异步

  • setTimeout
  • callback
  • ajax
  • onclick等事件

global & 环境变量

global

  • 在文件中打印this,node执行此文件,输出的this不是global,而是 {};
  • 在控制台运行node环境,输出this就是global;
原因:node自带模块化功能,一个js文件就是一个模块,nodejs模块是通过闭包(自执行函数)实现的,模块的this不是global
console.log(this) // {}
consoel.log(this === global)//false
复制代码
  • 每个文件都是一个模块,都有局部作用域,所以声明对象不会挂载到全局global上;不声明,通过作用域查找会挂载到global上
var a = 1;
console.log(global.a) //undefined

b = 2;
console.log(global.b)//2
复制代码
  • global是全局变量,在所有模块中均可不声明直接使用global,global上的属性也可以直接使用。
    //1.console.log/warn/info/error
    //console.time + console.timeEnd 用来计算时间差
    console.time('time')
    for(let i = 0;i++;i<2000){
        
    }
    console.timeEnd('time'); //target: 0.263ms
    //2.process 进程,可以用来设置环境变量,区分环境,
    //3.Buffer缓存区
    //4.setTimeout clearTimeout ; setImmediate clearImmediate
复制代码

process进程 & 环境变量

  • process.env,可以在process.env上增加NODE_ENV属性区分开发环境和生产环境
/*
{ PATH: '/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin',
    SHELL: '/bin/bash',
    FORCE_COLOR: 'true',
    ELECTRON_NO_ATTACH_CONSOLE: 'true',
    USER: 'shiqiao',
    DEBUG_COLORS: 'true',
    TMPDIR: '/var/folders/s7/bcsmxhf15551jq1xctzbwhhm0000gn/T/',
    npm_config_color: 'always',
    SSH_AUTH_SOCK: '/private/tmp/com.apple.launchd.d4VtTs9GCP/Listeners',
    MOCHA_COLORS: '1',
    XPC_FLAGS: '0x0',
    __CF_USER_TEXT_ENCODING: '0x1F5:0x19:0x34',
    Apple_PubSub_Socket_Render: '/private/tmp/com.apple.launchd.fEp3WInsEM/Render',
    LOGNAME: 'shiqiao',
    LC_CTYPE: 'zh_CN.UTF-8',
    XPC_SERVICE_NAME: 'com.jetbrains.WebStorm.1360',
    PWD: '/Users/shiqiao/study/20181122',
    HOME: '/Users/shiqiao' }
  */
设置NODE_ENV
1.在控制台里配置NODE_ENV。
mac:export NODE_ENV=dev
windows: set NODE_ENV=dev
查看的时候 需要控制台运行才能看到设置的NODE_ENV
// bogon:20181122 shiqiao$ export NODE_ENV=dev
// bogon:20181122 shiqiao$ node 2.process.js


2.IDE webstorm设置环境变量,在webstorm设置环境变量,右上脚,三角箭头,可以设置
直接IDE 运行js文件就可已看到NODE_ENV

复制代码
//如果代码放到服务器上,那就没有此环境变量,那就取不到。取不到,可以走线上环境。webpack会用到,根据环境变量区分生产环境和开发环境
console.log(process.env.NODE_ENV)

let url = "";
if(process.env.NODE_ENV=='dev'){
    url = 'http://localhost:3000';
}else{
    url = 'http://www.aaa.cn';
}
console.log(url);
复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值