es6

    

    ECMAScript 6.0(以下简称 ES6)是 JavaScript
语言的子弟标准,已经当2015年6月正式颁发了。它的靶子,是让 JavaScript
语言可以据此来修复杂的重型应用程序,成为企业级支语言。


 

1、ECMAScript 和 JavaScript 的关系

一个广阔的题目是,ECMAScript 和 JavaScript 到底是什么关系?

假定讲话明白是题目,需要回顾历史。1996年11月,JavaScript 的创造者 Netscape
公司,决定拿 JavaScript
提交给国际标准化组织ECMA,希望这种语言会成为国际标准。次年,ECMA
发布262哀号标准文件(ECMA-262)的第一本,规定了浏览器脚本语言的正经,并拿这种语言称为
ECMAScript,这个本子就是1.0本。

拖欠专业于平开始就是是针对 JavaScript 语言制定的,但是就此不受
JavaScript,有个别个原因。一凡商标,Java 是 Sun
公司之商标,根据授权协议,只有 Netscape 公司可以合法地行使 JavaScript
这个名字,且 JavaScript 本身吗就于 Netscape
公司注册为商标。二凡怀念体现当下门语言的制定者是 ECMA,不是
Netscape,这样好确保及时宗语言的开放性和中立性。

因此,ECMAScript 和 JavaScript
的涉及是,前者是后世的标准化,后者是前者的同一种植实现(另外的 ECMAScript
方言还有 Jscript 和 ActionScript)。日常场合,这半只词是足以换的。

 


2、ES6 与 ECMAScript 2015 的关系

ECMAScript 2015(简称 ES2015)这个词,也是时常可以看到的。它跟 ES6
是呀关联吧?

2011年,ECMAScript 5.1版发表后,就起制订6.0版本了。因此,ES6
这个词的原意,就是负 JavaScript 语言的生一个版本。

但是,因为这本子引入的语法功能最好多,而且制定过程当中,还有很多团伙与个体不断提交新效能。事情很快即变换得清楚了,不可能当一个本中连拥有将要引入的作用。常规的做法是事先宣布6.0本子,过一段时间再发作6.1版,然后是6.2本子、6.3版等等。

但是,标准的制定者不思量然做。他们感念吃专业的升级成为正常流程:任何人在其余时刻,都得为专业委员会提交新语法的提案,然后标准委员会每个月开始平次会见,评估这些提案是否可以领,需要哪改善。如果经过数集会之后,一个提案足够成熟了,就得正式上正式了。这就是说,标准的本升级成了一个频频滚动的流水线,每个月份都见面产生改观。

标准委员会最终决定,标准于历年的6月份专业颁布一坏,作为当下之正规化版本。接下来的日,就当这版的根底及举行变更,直到下一样年之6月份,草案即自然成为了初一年之版。这样一来,就不需先的本子号了,只要用年标记就可以了。

ES6 的率先单本子,就这么以2015年6月颁布了,正式名称即使是《ECMAScript
2015标准》(简称 ES2015)。2016年6月,小幅修订的《ECMAScript
2016业内》(简称 ES2016)如期发布,这个版可以作为是 ES6.1
版,因为双方的反差颇小(只新增了数组实例的includes方和指数运算符),基本上是跟一个正式。根据计划,2017年6月通告
ES2017 标准。

为此,ES6 既是一个史名词,也是一个泛指,含义是5.1版之后的 JavaScript
的晚辈标准,涵盖了ES2015、ES2016、ES2017之类,而ES2015
则是规范名称,特指该年发布的正儿八经版本的言语专业。本书中涉及 ES6
的地方,一般是依赖 ES2015 标准,但偶尔也是泛指“下一代 JavaScript 语言”。

 


 

3、部署进度

各大浏览器的时髦版本,对 ES6
的支持好查kangax.github.io/es5-compat-table/es6/。随着年华的推移,支持度已经越发强了,超过90%之
ES6 语法特性都落实了。

Node 是 JavaScript 的服务器运行条件(runtime)。它对 ES6
的支撑过还胜似。除了那些默认打开的意义,还有有语法功能曾落实了,但是默认没有打开。使用下的一声令下,可以查阅
Node 已经实现之 ES6 特性。

$ node --v8-options | grep harmony

面命令的出口结果,会坐本的差而有所不同。

本人写了一个工具 ES-Checker,用来检查各种运行环境对
ES6
的支撑情况。访问ruanyf.github.io/es-checker,可以看看你的浏览器支持
ES6 的水平。运行下面的一声令下,可以翻你方以的 Node 环境对 ES6
的支撑程度。

$ npm install -g es-checker
$ es-checker

=========================================
Passes 24 feature Dectations
Your runtime supports 57% of ECMAScript 6
=========================================

4、Babel 转码器

Babel 是一个普遍采用的 ES6 转码器,可以拿 ES6
代码转为 ES5 代码,从而在存活条件实行。这表示,你得为此 ES6
的办法编写程序,又毫无担心现有条件是否支持。下面是一个例。

// 转码前
input.map(item => item + 1);

// 转码后
input.map(function (item) {
  return item + 1;
});

方的原始代码用了箭头函数,Babel
将那转为一般函数,就会当不支持箭头函数的 JavaScript 环境实行了。

 

配置文件.babelrc

Babel 的配备文件是.babelrc,存放于路的彻底目录下。使用 Babel
的首先步,就是安排是文件。

拖欠文件用来设置转码规则与插件,基本格式如下。

{
  "presets": [],
  "plugins": []
}

presets字段设定转码规则,官方提供以下的规则集,你可因需要装。

# 最新转码规则
$ npm install --save-dev babel-preset-latest

# react 转码规则
$ npm install --save-dev babel-preset-react

# 不同阶段语法提案的转码规则(共有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": [
      "latest",
      "react",
      "stage-2"
    ],
    "plugins": []
  }

瞩目,以下有所 Babel工具和模块的运,都须先勾勒好.babelrc

 

令行转码babel-cli

Babel提供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
转码。这象征,如果项目只要运行,全局环境要发
Babel,也就是说项目产生了针对环境的凭。另一方面,这样做也无能为力支撑不同类型应用不同版本的
Babel。

一个解决办法是拿babel-cli装于列中。

# 安装
$ npm install --save-dev babel-cli

然后,改写package.json

{
  // ...
  "devDependencies": {
    "babel-cli": "^6.0.0"
  },
  "scripts": {
    "build": "babel src -d lib"
  },
}

转码的早晚,就行下的吩咐。

$ npm run build




-----------参考es6入门