[关闭]
@a06062125 2016-12-13T18:14:36.000000Z 字数 2874 阅读 374

Start Coding with es2015

未分类


What are they

Nodejs 的 Api

如果某些代码需要调用Babel的API进行转码,就要使用babel-core模块。返回值为进行过es6语法转译的代码(code), 对应的source map, 以及ast.

  1. var babel = require('babel-core');
  2. // 字符串转码
  3. babel.transform('code();', options);
  4. // => { code, map, ast }
  5. // 文件转码(异步)
  6. babel.transformFile('filename.js', options, function(err, result) {
  7. result; // => { code, map, ast }
  8. });
  9. // 文件转码(同步)
  10. babel.transformFileSync('filename.js', options);
  11. // => { code, map, ast }
  12. // Babel AST转码
  13. babel.transformFromAst(ast, code, options);
  14. // => { code, map, ast }

Babel默认只转换新的JavaScript句法(syntax),而不转换新的API,比如Iterator、Generator、Set、Maps、Proxy、Reflect、Symbol、Promise等全局对象,以及一些定义在全局对象上的方法(比如Object.assign)都不会转码。

babel-polyfill 实现了这些API的垫片。

使用方法:在打包文件的入口状况, 引入 babel-polyfill ;

  1. // index.js
  2. import 'babel-polyfill';
  3. // 或者
  4. require('babel-polyfill');

Tips: es5-shim and es5-sham

babel-polyfill已经实现了所有的垫片, 打包过babel-polyfill的业务代码所在的模板页面,不需要再用以下方式引入es5-shimes5-sham

  1. <!--[if lte IE 8]>
  2. <script src="/lib/es5-shim.min.js"></script>
  3. <script src="/lib/es5-sham.min.js"></script>
  4. <![endif]-->

Babel command line.

在terminal中使用babel

babel-cli工具自带一个babel-node命令,提供一个支持ES6的REPL环境。它支持Node的REPL(Read-Eval-Print-Loop)环境的所有功能,而且可以直接运行ES6代码。不建议是生产环境使用, 因为所有的转译都是即时的(compiling on the fly)

  1. babel script.js --out-file script-compiled.js --presets=add-module-exports,transform-es2015-modules-amd

it's transform plugin for browserify

  1. var fs = require("fs");
  2. var browserify = require("browserify");
  3. var babelify = require("babelify");
  4. browserify({ debug: true })
  5. .transform(babelify)
  6. .require("./script.js", { entry: true })
  7. .bundle()
  8. .on("error", function (err) { console.log("Error: " + err.message); })
  9. .pipe(fs.createWriteStream("bundle.js"));
  10. COPY

Other Packages

Plugins

可以认为plugins 是为了兼容而做的垫片

Presets

a set of Plugins

-- Official Presets

  1. - env (配置更灵活, 可以指定target和浏览器列表)
  2. - latest (按年份集合可用的plugins, 目前包含es2015, es2016, es2017)
  3. - es2017 (async-to-generator, syntax-trailling-function-commas)
  4. - es2016 (exponentiation-operator)
  5. - es2015 (...)
  6. - react

Tips: Presets 和 Plugins 的顺序 :

This means if two transforms both visit the “Program” node, the transforms will run in either plugin or preset order.
- Plugins run before Presets.
- Plugin ordering is first to last.
- Preset ordering is reversed (last to first).

-- Stage-X

(Experimental Presets)

Any transforms in stage-x presets are changes to the language that haven’t been approved to be part of a release of Javascript (such as ES6/ES2015).

慎重使用 stage-0, stage-1;


Editors

sublime packages

Other


Css modules

/*
* @refer https://github.com/css-modules/css-modules
* @refer
*/


webpack

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注