Babel

作者: 爱笑的疯小妞 | 来源:发表于2018-12-25 14:16 被阅读0次

babel是一个javascript转译器,浏览器的发展速度赶不上javascript的发展速度,为了能在现有的浏览器上使用js新的语法和新的数据类型,就需要使用一个转译器,将javascript中新增的特性转为现代浏览器能理解的形式

babel-loader和babel-core版本不对应所产生的,
babel-loader 8.x对应babel-core 7.x
babel-loader 7.x对应babel-core 6.x

//@这个符号,只有babel7才特有的,babel6没有
npm install --save-dev @babel/core @babel/cli @babel/preset-env
npm install --save @babel/polyfill

@babel/core
Babel 的核心功能在@babel/core模块。
@babel/cli
@babel/cli是一个允许你从终端使用 babel 的工具
@babel/preset-env
插件包,babel-preset-env 等效于三个插件包(babel-preset-es2015, babel-preset-es2016, and babel-preset-es2017 )
@babel/polyfill
一个填补功能的工具,用来支持一些babel本身不能直接支持的新的API。
配置文件.babelrc/babel.config.js
之前版本的babel都是使用.baberc来做配置文件,babel7引入了babel.config.js。但是它并不是.baberc的替代品,二者根据使用的场景不同自行选择。
babel 配置的第一种配置方式.babelrc

{
  "presets": ["@babel/env"],//presets用于配置我们所需要的转译器
  "plugins": []//plugins用于配置我们转译所需要的插件
}

babel 配置的第二种配置方式babel.config.js

module.exports = {
    presets: [ "@babel/env" ],
    plugins: []
}
//或
module.exports = function (api) {
    api.cache(true);
    const presets = [ 
        ["@babel/env", {
              "targets": { //指定要转译到哪个环境
                  //浏览器环境
                  "browsers": ["last 2 versions", "safari >= 7"]
                  
              }
       }]
   ];
    return {
      presets
    };
  }

webpack里面使用babel,除需要配置之外,还需要:

 module: {
      rules: [
        {test: /\.(js|jsx)$/, use: 'babel-loader',exclude: /node_modules/}
      ]
    }

其他
在 2015 年之前 ES3 是主流。
ES2015 =》 ES6(ES6是在2015年发布的)
ES2016 =》 ES7
ES2017 =》 ES8

es2015 => babel-preset-es2015 (可以将 es6 的 JS 代码编译为 es5)
es2016 => babel-preset-es2016 (可以将 es7 的 JS 代码编译为 es6)
es2017 => babel-preset-es2017 (可以将 es8 的 JS 代码编译为 es7)

stage-x => babel-preset-stage-x (可以将处于某一阶段的js语法编译为正式版本的js代码)
这里再介绍下 stage-x, 提案共分为五个阶段:
stage-0: 稻草人-只是一个大胆的想法
stage-1: 提案-初步尝试
stage-2: 初稿-完成初步规范
stage-3: 候选-完成规范和浏览器初步实现
stage-4: 完成-将被添加到下一年发布

当前 babel 推荐使用 babel-preset-env 替代 babel-preset-es2015 和 babel-preset-es2016 以及 babel-preset-es2017 ,env的支持范围更广,包含es2015 es2016 es2017的所有语法编译,并且它可以根据项目运行平台的支持情况自行选择编译版本。

相关文章

网友评论

      本文标题:Babel

      本文链接:https://www.haomeiwen.com/subject/cpezkqtx.html