前端--ES6(2)

本节简单介绍:(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已经在慢慢改进了。

猜你喜欢

转载自blog.csdn.net/weixin_29080725/article/details/86683655