前言
Babel 是一个 JavaScript 编译器。今天就开始使用下一代 JavaScript 语法吧!
注意Babel是一个“编译器”!!!
babel的主要作用主要有以下几个吧:
- 将es6,es7,es8等新语法转换为各个浏览器兼容性较好的es5.
- 通过polyfill支持es6,7,8等新语法
- 将react的jsx进行转换
- 可以进行静态分析(编译的时候调试查错误,和tsc类似.
其中,前三个可以归类为“转换”,最后一个可以归类为“调试”。转换的意思,其实就是将某些新特性,转换为兼容性的代码,是一个把简单的代码转换为负责代码的过程。理论上我们可以通过babel开发一个新的语法格式语言(暂时没必要做,因为有社区大大们在做,我们可以做些其他的工作贡献。
babel结构
这里我以创建.babelrc文件配置,转换js文件来举例说明。
.babelrc
1 | { |
其中”presets”是预设的意思。”plugins”是插件的意思。”presets”是”plugins”的集合。比如”es2015”里面包括了以下插件:
1 | check-es2015-constants // 检验const常量是否被重新赋值 |
结束
刚开始我主要是搞不清楚它的是什么,它的”presets”和”plugins”之间的关系。后来搞清楚了。然后看了一下如何开发”plugins”,更加理解babel是一个编译器的概念了。其中涉及到编译原理里面的AST,语法分析,词法分析等等。大学学的编译原理基本上忘记了。之后有空,可以研究一下。Babel 插件手册
剩下的在各种环境下配置,根据官方文档和搜索来看就可以了。工作中,主要用到过webpack中,现在一看babel官网,很多东西就搞清楚了。