最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • Babel 相关知识点摘录

    正文概述 掘金(shuazi)   2020-11-28   576

    Babel 相关知识点摘录

    一、 存在形式主要有

    1. .babelrc
    2. .babelrc.js
    3. babel.config.js
    4. package.json
    5. 对于不同的构建工具,Babel也提供了相应的配置项,例如webpack的babel-loader的配置项,其本质和配置文件是一样的

    对于.babelrc,它的配置是这样子

      {
        "presets": ["es2015", "react"],
        "plugins": ["transform-decorators-legacy", "transform-class-properties"]
      }
    

    对于babel.config.js和.babelrc.js,它的配置是一样的,通过module.exports输出配置项

      module.exports = {
        "presets": ["es2015", "react"],
        "plugins": ["transform-decorators-legacy", "transform-class-properties"]
      }
    

    对于package.json,就是在package.json中增加一个babel属性和值,它的配置是这样子

      {
        "name": "demo",
        "version": "1.0.0",
        "description": "",
        "main": "index.js",
        "scripts": {
          "test": "echo \"Error: no test specified\" && exit 1"
        },
        "author": "",
        "babel": {
          "presets": ["es2015", "react"],
          "plugins": ["transform-decorators-legacy", "transform-class-properties"]
        }
      }
    

    仔细观察上述几种配置文件,会发现它们的配置项其实都是 pluginspresets

    二、plugins & presets

    1. 每个插件或预设都是一个npm包
    2. 所谓Babel编译的规则:就是在配置文件里列出的编译过程中会用到的Babel插件或预设。 这些插件和预设会在编译过程中把ES6代码转换成ES5
    3. presets 预设解决的问题是:Babel插件很多,假如只配置插件数组,前端工程要把编译ES2015,ES2016,ES2017…下的所有插件都写到配置项里,Babel配置文件会非常臃肿
    4. presets 是一组Babel插件的集合,用大白话说就是插件包
    5. presets 也可以是插件和其它预设的集合
    6. Babel官方已经对常用的环境做了一些preset包:
      • @babel/preset-env
      • @babel/preset-react
      • @babel/preset-typescript
      • @babel/preset-stage-0
      • @babel/preset-stage-1 …
    7. plugins插件数组和presets预设数组是有顺序要求的。如果两个插件或预设都要处理同一个代码片段,那么会根据插件和预设的顺序来执行。规则如下:
      • 插件比预设先执行
      • 插件执行顺序是插件数组从前向后执行
      • 预设执行顺序是预设数组从后向前执行
    8. presets 和 plugins 的默认参数是字符串:"presets": ["@babel/preset-env"]
    9. 给插件或预设设置参数,那么成员项就不能写成字符串了,而要改写成一个数组,例如给@babel/preset-env设置参数:
      {
        "presets": [
          [
            "@babel/preset-env", //预设名称
            { //预设参数对象
              "useBuiltIns": "entry"
            }
          ]
        ]
      }
    

    Babel 预设与插件的选择

    Babel-polyfill

    1. @babel/polyfill本质是由两个npm包 core-jsregenerator-runtime 组合而成的

    @babel/preset-env

    1. Babel6 时代,这个预设名字是 babel-preset-env;Babel7 之后,改成@babel/preset-env
    2. browserslist 叫做目标环境配置表,除了写在package.json里,也可以单独写在工程目录下.browserslistrc文件里
     //配置含义是,目标环境是市场份额大于1%的浏览器并且不考虑IE8及一下的IE浏览器
     "browserslist": [ //
        "> 1%",
        "not ie <= 8"
      ]
    
    1. @babel/preset-env可以通过browserslist针对目标环境不支持的语法进行语法转换
    2. 如果@babel/preset-env不设置任何参数,Babel就会完全根据browserslist的配置来做语法转换。如果没有browserslist,那么Babel就会把所有ES6的语法转换成ES5版本。
    3. Babel使用browserslist的配置功能依赖于@babel/preset-env,如果Babel没有配置任何预设或插件,那么Babel对转换的代码会不做任何处理,原封不动生成和转换前一样代码
    4. 如果对@babel/preset-env的targets参数项进行了设置,那么就不使用browserslist的配置,而是使用targets的配置。如不设置targets,那么就使用browserslist的配置。如果targets不配置,browserslist也没有配置,那么@babel/preset-env就对所有ES6语法转换成ES5的

    起源地下载网 » Babel 相关知识点摘录

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元