1
0
mirror of https://github.com/ruanyf/es6tutorial.git synced 2025-05-24 18:32:22 +00:00

修改intro

This commit is contained in:
Ruan Yifeng 2015-03-17 22:38:31 +08:00
parent 46395127c2
commit 539a0e9f59

View File

@ -38,19 +38,21 @@ ECMA的第39号技术专家委员会Technical Committee 39简称TC39
由于ES6还没有定案有些语法规则还会变动目前支持ES6的软件和开发环境还不多。各大浏览器的最新版本对ES6的支持可以查看[kangax.github.io/es5-compat-table/es6/](http://kangax.github.io/es5-compat-table/es6/)。
Google公司的V8引擎已经部署了ES6的部分特性。使用Node.js 0.11版,就可以体验这些特性。
Google公司的V8引擎已经部署了ES6的部分特性。使用Node.js 0.12版,就可以体验这些特性。
Node.js的0.11版还不是稳定版本,要使用版本管理工具[nvm](https://github.com/creationix/nvm)切换。下载nvm以后进入项目目录运行下面的命令。
可以使用版本管理工具[nvm](https://github.com/creationix/nvm)安装Node.js 0.12版。下载nvm以后进入项目目录运行下面的命令。
```bash
$ source nvm.sh
$ nvm use 0.11
$ nvm use 0.12
$ node --harmony
```
启动命令中的`--harmony`选项可以打开所有已经部署的ES6功能。使用下面的命令可以查看所有与ES6有关的单个选项。
上面最后一个命令的`--harmony`选项可以进入REPL环境打开所有已经部署的ES6功能。
使用下面的命令可以查看Node.js所有与ES6有关的单个选项。
```bash
@ -73,9 +75,39 @@ $ node --v8-options | grep harmony
```
## Traceur编译器
从Node.js分立的[io.js](https://iojs.org)项目对ES6的支持更彻底。不用打开任何参数它就支持8项ES6特性。
Google公司的[Traceur](https://github.com/google/traceur-compiler)编译器可以将ES6代码编译为ES5代码。这意味着你可以用ES6的方式编写程序又不用担心浏览器是否支持。
- 块级作用域letconst
- 集合型数据类型MapSetWeakMapWeakSet
- Promise
- Iterator
- Generator
- 模板字符串
- Symbol
- 二进制和八进制表示法,新的字符串方法
使用 --es_staging 参数或 --harmony 参数打开另外两项ES6特性。
- Class
- 对象的简易表示法
还有一些开发没有结束的特性,需要使用特定的参数,逐一打开。使用下面的命令,查看这些参数。
```bash
$ iojs --v8-options | grep "in progress"
- --harmony_modules
- --harmony_arrays
- --harmony_array_includes
- --harmony_regexps
- --harmony_arrow_functions
- --harmony_proxies
- --harmony_sloppy
- --harmony_unicode
```
## Traceur转码器
Google公司的[Traceur](https://github.com/google/traceur-compiler)转码器可以将ES6代码转为ES5代码。这意味着你可以用ES6的方式编写程序又不用担心浏览器是否支持。
它有多种使用方式。
@ -144,7 +176,7 @@ Traceur提供一个[在线编译器](http://google.github.io/traceur-compiler/de
<script src="http://google.github.io/traceur-compiler/bin/traceur.js"
type="text/javascript"></script>
<script src="http://google.github.io/traceur-compiler/src/bootstrap.js"
type="text/javascript"></script>
type="text/javascript"></script>
<script>
traceur.options.experimental = true;
</script>
@ -239,6 +271,48 @@ fs.writeFileSync('out.js.map', result.sourceMap);
```
## Babel转码器
[Babel](https://babeljs.io/)是另一个广泛使用的ES6转码器安装命令如下。
```bash
$ npm install --global babel
```
Babel自带一个 `babel-node` 命令与Node命令行完全一致而且可以直接运行ES6代码。
```bash
$ babel-node
>
> console.log([1,2,3].map(x => x * x))
[ 1, 4, 9 ]
>
```
`babel-node` 命令也可以直接运行ES6脚本。假定将上面的代码放入脚本文件 es6.js 。
```bash
$ babel-node es6.js
[1, 4, 9]
```
babel 命令可以将ES6代码转为ES5代码。
```bash
$ babel es6.js
"use strict";
console.log([1, 2, 3].map(function (x) {
return x * x;
}));
```
`-o` 参数将转换后的代码,从标准输出导入文件。
```bash
$ babel es6.js -o es5.js
```
## ECMAScript 7
2013年3月ES6的草案封闭不再接受新功能了。新的功能将被加入ES7。