Babel的出现

108 阅读1分钟

契机

多年以前,我们书写的是最原始的Javascript:

定义变量  
var a = 1  

定义函数  
function b () {
    // ...
}  
函数对象添加属性或者方法  
b.prototype.f1 = function () {}

慢慢的,随着新标准(ECMAScript2015)的出现,定义变量等已经不再局限于以前的方式,

定义变量不再只能用var
let a = 1
const b = 2

函数定义可用箭头函数
let c = () => {
    // ...
}

函数声明已经可以用class替代
class D {
    constructor() {
        // ...
    }
    
    myProperty = 1;
    
    myFunction () {
        // ...
    }
}

但是制约javascript书写的一个因素--浏览器--成为了拦路虎。
由于浏览器版本不一致的因素,为了达成统一能够使用最新的javascript语法,babel应运而生。

Babel是什么?

它是一个编译器也是一个转译器,旨在将Javascript最新语法转译为旧版语法,实现polyfill ,如此一来,可以根据用户使用的版本的浏览器根据配置来实现自己的polyfill

如何去配置自己的Babel?

首先,在项目中创建.babelrc或者babel.config.js形式的文件:

Snipaste_2025-02-07_15-53-51.png

Snipaste_2025-02-07_15-54-35.png
需要注意的是以.js结尾的文件输出格式为commonJs格式,而.babelrc却是json格式。
在正式编写之前,我想,我们还需要了解下Babel是怎么实现编译工作的?

Babel是怎么读取配置文件的?

简而言之,当启动编译相关的命令后(通过Webpack或者Babel),在命令行输入命令之后,会将babel.config.js中配置的预设(preset)或者plugin等项解析,最终合并成最终的配置。

Babel的基本执行过程

image.png
涉及的核心包主要有3个:
@Babel/parser
@Babel/traverse
@Babel/generator

待补充...