babel笔记

babel笔记

.babelrc配置文件

{
  "presets": [],
  "plugins": []
}
  • presets字段设定转码规则
    # 最新转码规则
    $ npm install --save-dev babel-preset-latest
    # react 转码规则
    $ npm install --save-dev babel-preset-react
    
  • plugins字段设定babel的插件
    # 单独引入箭头函数
    "plugins": ["transform-es2015-arrow-functions"]
    

babel-core的作用

  • 以编程的方式来使用Babel,如果某些代码需要调用Babel的API进行转码,就要使用babel-core模块。
    var babel = require('babel-core');
    // 字符串转码
    babel.transform('code();', options);
    // => { code, map, ast }
    // 文件转码(异步)
    babel.transformFile('filename.js', options, function(err, result) {
      result; // => { code, map, ast }
    });
    // 文件转码(同步)
    babel.transformFileSync('filename.js', options);
    // => { code, map, ast }
    

babel-cli的作用

  • babel-cli工具用于命令行转码。
    # 转码结果输出到标准输出
    $ babel example.js  
    # 转码结果写入一个文件
    # --out-file 或 -o 参数指定输出文件
    $ babel example.js --out-file compiled.js
    

babel-loader的作用

  • babel加载器,在webpack中想使用babel就需要使用babel-loader,babel-loader会根据.babelrc配置来会用不同的babel(如babel-preset-es2015,babel-preset-react,babel-preset-stage-0之类)
    //...
    {
        test: /\.js$/,
        exclude: /node_modules/,
        loader: 'babel-loader'
    }
    //...
    

babel-preset-es2015的作用

  • babel-preset-es2015中包含了es6->es5所有
    //...
    {
        test: /\.js$/,
        exclude: /node_modules/,
        loader: 'babel-loader'
    }
    //...
    

babel-polyfill的作用

  • Babel默认只转换新的JavaScript句法(syntax),而不转换新的API,比如Iterator、Generator、Set、Maps、Proxy、Reflect、Symbol、Promise等全局对象,以及一些定义在全局对象上的方法(比如Object.assign)都不会转码。
    • $ npm install --save babel-polyfill
    //脚本头部引入:
    import 'babel-polyfill';// 或者require('babel-polyfill');
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。