Babel 的认知篇
Babel 是一个 JavaScript 编译器
babel 默认只转换新的js语法,而不转换新的 API,,比如 Iterator, Generator, Set, Maps, Proxy, Reflect, Symbol,Promise 等全局对象。以及一些在全局对象上的方法(比如 Object.assign)都不会转码。
基本知识:
- babel 的作用是转换 JS 新的特性代码为大部分浏览器能运行的代码。
- babel 转码又分为两部分,一个是语法转换,一个是 API 转换。
- 对于 API 的转换又分为两部分,一个是全局 API 例如 Promise,Set,Map 还有静态方法 Object.assign,另一个是实例方法例如Array.prototype.includes。对于实例方法 core-js@2 是转换不了的,只有 core-js@3 才会转换。
- babel 代码转换依赖 plugin,没有 plugin 的情况下 babel 做的事情只是 code => code。
- plugin 有很多,一个个导入又特别麻烦,这时候我们又知道了preset
注意:preset 是从右往左执行,plugin 是从左往右执行,并且 plugin 先于 preset 执行
.babelrc配置介绍
主要对预设( presets )和插件( plugins )对配置。
1、plugins 告诉 babel 要使用哪些插件,控制如何转换代码。
如:babel-polyfill,babel-runtime,babel-transform-runtime等。
2、presets 属性告诉 Babel 要转换的源码使用了哪些新的语法特性,presets 是一组 Plugins 的集合。
如: babel-preset-env
babel-preset-env 相当于 babel-preset-latest 它会根据目标环境选择不支持的新特性来转译。
1 | (1) 支持每个浏览器最后两个版本和 safari 大于等于 7 版本所需的 polyfill 代码转换,我们可以如下配置: |