#yyds干货盘点#对于babel的一些理解

时间:2021-01-19 01:01:40

Babel 是一个 JavaScript 编译器

Babel 是一个工具链,主要用于将采用 ECMAScript 2015+ 语法编写的代码转换为向后兼容的 JavaScript 语法,以便能够运行在当前和旧版本的浏览器或其他环境中。

  • 语法转换
  • 通过 Polyfill 方式在目标环境中添加缺失的特性 (通过引入第三方 polyfill 模块,例如core-js)
  • 源码转换(codemods)

遇到的问题

在chrome61环境中报错ResizeObserver is not a function。
经确认ResizeObserver特性最低支持chrome64,于是将babel编译的目标版本设置为chrome 61,但改报错仍未解决,经过一番查找,原因如下:

Babel only polyfills ECMAScript features.

What is ECMAScript? It is the core of the JavaScript that you can use in the browser. Browsers implements ECMAScript, and on top of it there are lots of expansions (Dom objects, service workers, Ajax, ...). ResizeObserver is one of those expansions.

How can you know if a feature is part of ECMAScript or not?
I'd suggest searching for that function on MDN, and look at the Specifications section (​​ArrayBuffer example​​).

​参考出处​

于是手动引入​​resize-observer-pollyfill​​问题就解决了

划重点
babel只会处理ECMAScript标准中的特性