本节简单介绍:(1)nvm node npm 安装 (2)babel (3)let 和 const命令相关
相关安装
(1)官网下载 nvm-setup.zip(超慢,网盘下的)
https://github.com/coreybutler/nvm-windows/releases
(2)安装完成后,记住要重新打开cmd,然后nvm操作才好使(下面是常用命令)
nvm v // 查看版本 => 1.1.1
nvm install latest // 下载最新的 node 版本 v7.2.0
nvm install 4.4.4 // 安装不同版本
nvm install 6.2.0 32 // 默认是64位,32位需指定
nvm uninstall 6.2.0 #卸载对应的版本
----------------------------我的操作步骤:------------------------------
查看可用的(可下载的)全部node版本: nvm ls available
安装node: nvm install 10.12.0
可以安装其他版本,下面这样切换就可以: nvm use 8.9.3
现在我们安装的是10.12.0,也需要use一下才能用
nvm use 10.12.0 (我没有use然后node -v就不好使)
但是到这里node好用了,但是nvm不好用。
(3)
经过查找最终决定单独安装node,npm也会自动安装。
https://nodejs.org/en/ 官网下node
(下一步就行,注意自动填写路径,要不自己填path)
最后重新打开cmd node -v npm -v都可以使用了。
(4)
直接指定registry为淘宝镜像
npm config set registry https://registry.npm.taobao.org
安装cnpm
npm install -g cnpm --registry=https://registry.npm.taobao.org
我这里到这儿就安装成功了,如果cnpm不起作用,则填写环境变量试试。
babel转码
Babel转码器,可以将ES6转码为ES5,从而在现有环境执行。
----------------------------配置 开始------------------------------
使用Babel需要先在项目根目录下,添加配置文件 .babelrc 格式如下
{
"presets": [],
"plugins": []
}
presets字段设定转码规则,官方提供以下的规则集
#ES2015转码规则
$ npm install --save-dev babel-preset-es2015
#react转码规则
$ npm install --save-dev babel-preset-react
#ES7不同阶段语法提案的转码规则(共有4个阶段),选装一个
$ npm install --save-dev babel-preset-stage-0
$ npm install --save-dev babel-preset-stage-1
$ npm install --save-dev babel-preset-stage-2
$ npm install --save-dev babel-preset-stage-3
然后,将这些规则加入.babelrc。
{
“presets”: [
“es2015”,
“react”,
“stage-2”
],
“plugins”: []
}
----------------------------配置 结束------------------------------
上面配置好后下面的工具才能使用:
babel-cli工具用于命令行转码:
npm install --global babel-cli
用法如下
#转码结果输出到标准输出
$ babel example.js
#转码结果写入一个文件
#--out-file 或 -o 参数指定输出文件
$ babel example.js --out-file compiled.js
#或者
$ babel example.js -o compiled.js
#整个目录转码
#--out-dir 或 -d 参数指定输出目录
$ babel src --out-dir lib
#或者
$ babel src -d lib
#-s 参数生成source map文件
$ babel src -d lib -s
babel-node是跟着babel -cli安装的,它可以直接运行ES6代码哦!!
babel-node 输入就可以启动 (中间没有空格)
babel-node es6.js 也可以直接运行脚本。
也可以直接安装在项目里,也不做记录,遇到需要专门记录。
babel-register模块改写require命令
babel -cli 为了减少全局依赖也可以安装在项目中
如果某些代码需要调用Babel的API进行转码,就要使用babel-core模块
babel-polyfill --貌似有些不会被转码的它可以转
(上面几个都没安装,暂时了解,例子用到就明白了。)
https://babeljs.io/repl/ babel的在线转码
Traceur也可以转码
let const命令
简单点来说这两个都是定义变量用的
let两个都只在代码块内有效(函数同理),但是const的指针不能改。
具体实例:
for (let i = 0; i < arr.length; i++) {}
console.log(i);
//ReferenceError: i is not defined //for里面定义的变量,在外面用就会报错
var tmp = 123;
if (true) {
tmp = 'abc'; // ReferenceError //这里就叫***死区***,let定义之前不可以使用。
let tmp;
}
let不允许在相同作用域内,重复声明同一个变量。
function func(arg) {
let arg; // 报错
}
function func(arg) {
{
let arg; // 不报错 //里面又加了一个块
}
}
函数与let类似
function f() { console.log('I am outside!'); }
(function () {
function f() { console.log('I am inside!'); }
if (false) {
}
f();
}());
块内多使用函数表达式,而不是函数声明语句
// 函数声明语句
{
let a = 'secret';
function f() {
return a;
}
}
// 函数表达式
{
let a = 'secret';
let f = function () {
return a;
};
}
}
const声明一个只读的常量。一旦声明,常量的值就不能改变。
const PI = 3.1415;
PI // 3.1415
PI = 3;
// TypeError: Assignment to constant variable.
所以也就是说声明就必须初始化;*(给值)
不过const也只是地址不可变,地址的指向是可变的
const a = [];
a.push('Hello'); // 可执行
a.length = 0; // 可执行
a = ['Dave']; // 报错
ES6一共有6种声明变量的方法:(之前的var和function),(这里的let和const),(之后还会提到的import命令和class命令)
以前随便声明的var都是全局变量,现在开始let命令、const命令、class命令声明的全局变量,不属于全局对象的属性。熟悉的同学可能清楚以前随便定义变量很容易出错的,ES6已经在慢慢改进了。