babel

作者: 行走的蛋白质 | 来源:发表于2020-01-17 16:45 被阅读0次
  • babel 是一个广泛使用的转码器,可以将 es6 代码转换为 es5 代码,从而在现有的环境下执行
原理
  • 大多数 JavaScript Parser 遵循 estree 规范,Babel 最初基于 acorn 项目(轻量级现代 JavaScript 解析器) -

Babel大概分为三大部分:

  • 解析:将代码转换成 AST 抽象语法树
    词法分析:将代码(字符串)分割为token流,即语法单元成的数组
    语法分析:分析token流(上面生成的数组)并生成 AST
  • 转换:访问 AST 的节点进行变换操作生产新的 AST
    Taro就是利用 babel 完成的小程序语法转换
  • 生成:以新的 AST 为基础生成代码

npm install babel-loader babel-core babel-preset-env

注:babel-loader 版本最高为7,否则会报错
新版本安装如下:

npm install babel-loader @babel/core @babel/preset-env
配置文件 .babelrc

该文件用来设置转码规则和插件,格式如下:

// 如果使用新版本 bable-loader 则下面 env 要写成 @babel/preset-env
// react ---> @babel/react
// es2015 ---> 去掉
{
    "presets": [
        "react",
        "es2015",
        "env"
    ],
    "plugins": []
}

presets 字段设置转码规则,安装规则如下:

# ES2015转码规则
$ npm install --save-dev babel-preset-es2015 // 新版本 babel-plugin-transform-runtime plugins 里面 @babel/plugin-transform-runtime

# react转码规则
$ npm install --save-dev babel-preset-react // 新版本 @babel/preset-react

#ES6在Array对象上新增了Array.from方法。Babel就不会转码这个方法。如果想让这个方法运行,必须使用babel-polyfill,为当前环境提供一个垫片。
$ npm install --save babel-polyfill // 新版本 @babel/polyfill

相关文章

网友评论

      本文标题:babel

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