美文网首页
Babel 各个功能解释

Babel 各个功能解释

作者: 光膀环腰 | 来源:发表于2020-11-17 12:05 被阅读0次

Babel是一个工具链,主要用于在旧的浏览器或环境中将ECMAScript2015+的代码转换为向后兼容版本的JavaScript代码。

babel-loader:使用Babel转换JavaScript依赖关系的Webpack加载器, 简单来讲就是webpack和babel中间层,允许webpack在遇到js文件时用bable来解析

@babel/core:即babel-core,将ES6代码转换为ES5。7.0之后,包名升级为@babel/core。@babel相当于一种官方标记,和以前大家随便起名形成区别。

@babel/preset-env:即babel-preset-env,根据您要支持的浏览器,决定使用哪些transformations / plugins 和 polyfills,例如为旧浏览器提供现代浏览器的新特性。

@babel/preset-react:即 babel-preset-react,针对所有React插件的Babel预设,例如将JSX转换为函数.

babel-polyfill

Babel默认只转换新的JavaScript语法,而不转换新的API。例如,Iterator、Generator、Set、Maps、Proxy、Reflect、Symbol、Promise等全局对象,以及一些定义在全局对象上的方法(比如Object.assign)都不会转译。如果想使用这些新的对象和方法,必须使用 babel-polyfill,为当前环境提供一个垫片。

babel-runtime

Babel转译后的代码要实现源代码同样的功能需要借助一些帮助函数,而这些帮助函数可能会重复出现在一些模块里,导致编译后的代码体积变大。

Babel 为了解决这个问题,提供了单独的包babel-runtime供编译模块复用工具函数。

在没有使用babel-runtime之前,库和工具包一般不会直接引入 polyfill。否则像Promise这样的全局对象会污染全局命名空间,这就要求库的使用者自己提供 polyfill。这些 polyfill一般在库和工具的使用说明中会提到,比如很多库都会有要求提供 es5的polyfill。

在使用babel-runtime后,库和工具只要在 package.json中增加依赖babel-runtime,交给babel-runtime去引入 polyfill 就行了;

关于更多babel-polyfill的解释,请点击链接

babel presets 和 plugins的区别

Babel插件一般尽可能拆成小的力度,开发者可以按需引进。比如对ES6转ES5的功能,Babel官方拆成了20+个插件。

这样的好处显而易见,既提高了性能,也提高了扩展性。比如开发者想要体验ES6的箭头函数特性,那他只需要引入transform-es2015-arrow-functions插件就可以,而不是加载ES6全家桶。

但很多时候,逐个插件引入的效率比较低下。比如在项目开发中,开发者想要将所有ES6的代码转成ES5,插件逐个引入的方式令人抓狂,不单费力,而且容易出错。

这个时候,可以采用Babel Preset。

可以简单的把Babel Preset视为Babel Plugin的集合。比如babel-preset-es2015就包含了所有跟ES6转换有关的插件。

相关文章

  • Babel 各个功能解释

    Babel是一个工具链,主要用于在旧的浏览器或环境中将ECMAScript2015+的代码转换为向后兼容版本的Ja...

  • 了解 Babel 各个模块

    了解 Babel 各个模块 本文所研究的是 babel 6 版本。babel 6 是 2015年10月30号 发布...

  • day07: 自定义babel plugin

    babel是什么? 用官方的解释就是Babel is a JavaScript compiler.Use next...

  • webpack之babel学习笔记

    babel 中文官网,中文学习手册.babel的作用:官网的解释是,Babel 是一个 JavaScript 编译...

  • Babel 进阶一

    参考文档[https://www.jiangruitao.com/babel/] @babel/core 核心功能...

  • Babel 进阶三

    相关工具包总结: Babel 相关工具包: @babel/core 提供核心功能 @babel/cli 提供命令行...

  • Babel学习和插件

    核心库 Babel 的核心功能在@babel/core模块。通过以下命令安装: npm install --sav...

  • 手写 compiler

    看 babel doc 的时候,首页看到了一个链接,说是能从 high level 解释 babel 是怎么工作的...

  • gulp各种实用插件整理

    各种插件按需求自己选择,各自功能如下: 1.babel-core babel-preset-es2015 gulp...

  • babel原理

    Babel的工作原理 Babel工作的三个阶段 Babel的功能非常纯粹,以字符串的形式将源代码传给它,它会返回一...

网友评论

      本文标题:Babel 各个功能解释

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