1 ECMAScript和JavaScript的关系
2 ECMAScript的历史
3 部署进度
3.1 浏览器兼容性
各大浏览器对 ES6
的支持情况:http://kangax.github.io/compat-table/es6/
3.2 ES6环境搭建
3.2.1 NPM
Github:https://github.com/creationix/nvm
1 | # 安装 nvm(安装后需要重启 Terminal) |
3.2.2 查看环境对 ES6 的支持度
浏览器环境:直接访问http://ruanyf.github.io/es-checker/
node环境:安装ES-Checker
的 node版
1 | $ npm install -g es-checker |
4 Babel转码器
4.1 安装转码器
1 | $ npm install --save-dev babel-preset-es2015 |
4.2 配置转码规则
注意:所有Babel
工具和模块都依赖.babelrc
配置文件
1 | # 在项目根目录编写 babel 配置文件 |
1 | { |
4.3 命令行工具
4.3.1 将 es6 脚本编译为 es5 版本
编译前(example.js)
1 | let input = [0, 1, 2, 3, 4, 5]; |
使用命令行工具编译
1 | $ babel example.js |
1 | ; |
4.3.2 babel-node
命令
类似node
,存在两种模式:REPL
和直接运行文件
1 | # 进入 REPL 模式 |
1 | $ babel-node example.js |
4.3.3 babel-register
模块
说明:babel-register模块改写require命令,为它加上一个钩子。此后,每当使用require加载.js、.jsx、.es和.es6后缀名的文件,就会先用Babel进行转码。
注意:只适合开发环境中使用
- 不属于
babel-cli
,需要单独安装 - 必需先加载
babel-register
- 支持的文件后缀
.js
jsx
.es
.es6
index.js
1 | // 先加载 babel-register,后面的才能自动转换 |
4.3.4 babel-core
基本使用
1 | var babel = require('babel-core'); |
例子
1 | var es6Code = 'let x = n => n + 1'; |
4.3.5 babel-polyfill
说明:Babel
默认只转换新的JavaScript
句法(syntax),而不转换新的API
。除非使用babel-polyfill
。
注意:Babel
默认不转码的API
非常多,详细清单可以查看babel-plugin-transform-runtime
。
安装到当前环境
1 | $ npm install --save babel-polyfill |
引入babel-polyfill
1 | import 'babel-polyfill'; |
4.3.6 浏览器环境
实时转换
- 获取
babel
的浏览器版本
1 | # node_modules/babel-core/browser.js |
- 在页面中使用(需要注明
type="text/babel"
)
1 | <script src="node_modules/babel-core/browser.js"></script> |
打包为生产环境的代码
说明:配合browserify
使用
注意:生产环境需要加载已经转码完成的脚本。
1 | $ npm install browserify -g |
4.3.7 在线转换
4.3.8 与其它工具的配合
4.3.8.1 ESLint
用于静态检查代码的语法和风格
- 安装 ESLint
1 | $ npm install --save-dev eslint babel-eslint |
- 配置
.eslintrc
1 | { |
- 配置
.package.json
1 | { |
4.3.8.2 Mocha
一个测试框架,如果需要执行使用ES6语法的测试脚本,可以修改package.json
的scripts.test
。
1 | "scripts": { |