babel - 现代前端开发人员躲不开的技能点

简介: babel 作为前端生态圈举足轻重的一员,在前端工程化等领域起着非常重要的作用。今天一起来看看那些常见的 babel 使用场景,看一看 babel 的生态圈有多庞大。

网络异常,图片无法展示
|

babel 作为前端生态圈举足轻重的一员,在前端工程化等领域起着非常重要的作用。今天一起来看看那些常见的 babel 使用场景,看一看 babel 的生态圈有多庞大。

webpack:babel-loader

虽说这一年来 vite 大火,但是 webpack 依旧占据着主流地位。babelwebpack 可以说是相互成就,基本配置 webpack 时必不可少的插件就是 babel-loaderwebpack 帮助前端开发者解决了工程化打包、开发的问题,而 babel 则帮助我们解决了 JS 的兼容问题。

随着 babel 最近几年的更新,在 webpack 中的配置也是越来越简单,我们只需要下载 babel-loader @babel/core @babel/preset-env 这三个依赖包,然后在 webpack.config.js 中配置好 babel 的配置即可。还记得早期 webpackbabel 刚盛行的时候,需要下载和配置一堆的 babel 插件,而现在 babel 通过 preset 方案大大降低了配置成本。

rollup:@rollup/plugin-babel

rollup 在库开发中的地位和 webpack 在普通项目开发中的地位相当,而且 vite 还是深度依赖 rollup 来进行打包,包括它的插件设计都是参考 rollup 的插件来的。然而在实际使用中,为了保障代码能够正常运行,我们依旧需要使用 @rollup/plugin-babel 来帮助解决转译和 polyfill 问题。

vite:@vitejs/plugin-legacy

vite 在最近的一年里热度上升迅速,大有赶超 webpack 的趋势,然而如果你想让你的产品安心上线,就需要考虑浏览器的兼容问题,特别是在国内。于是 vite 团队开发了 @vitejs/plugin-legacy 插件来解决兼容问题。

而其实 @vitejs/plugin-legacy 就是使用 babel 来实现兼容的,不过不同于在 webpackrollup中的使用,@vitejs/plugin-legacy 使用的是 @babel/standalone,所以不需要额外的插件等依赖包,而且配置也是被 @vitejs/plugin-legacy 封装好的,不需要自行编写,所以在使用时让开发者几乎感觉不到 babel 的存在。

@babel/cli

babel 本身也提供了 cli 工具用来进行直接的代码转译。一般使用在开发开源库时,有些包除了会将库使用 webpack 等工具进行打包外,还会再使用 @babel/cli 直接进行文件转译,这样可以方便进行文件级别的按需加载,当然在 tree-shaking 到来后,这种需求正在慢慢减少。

@babel/standalone

@babel/standalone 上面也提到过,在 @vitejs/plugin-legacy 中使用的就是它了,它是另一个 babel 官方提供的能够直接调用 babel 能力的包。不同于使用 @babel/core 需要自行安装或配置各种插件,@babel/standalonebabel 自身几乎所有的插件全部内置,并且它可以直接在浏览器运行,当然带来的问题就是它庞大的体积和略差的性能。一般情况下不推荐使用,只有在一些浏览器需要在线编译的特殊场景才会用到。

eslint:@babel/eslint-parser

现代前端开发者 eslint 也是不可或缺的一员,然而 eslint 本身的 parser 所支持的语法速度有时会和项目中所用到的有所差别,此时便可以通过 @babel/eslint-parser 来让 eslint 识别这些语法,保证开发提示和编译的统一性。

react:@babel/preset-react

当我们在开发 react 应用时,必然需要处理 jsx 的编译问题,babel 一样提供了方案,通过 @babel/preset-react,不但可以解决 jsx 的编译问题,它还能帮忙自动添加 displayName,还支持自定义 jsx 实现。

typescript:@babel/preset-typescript

TS 无比流行的现在,我们在开发时必然绕不开 TS 的编译问题,此时 babel@babel/preset-typescript 插件便可以派上用场,使用后可以一站式解决编译转译问题,不需要再借助额外的 ts-loader 等。

codemod - jscodeshift

此外,babelcodemod 中也起着重要的作用,如 jscodeshift 中就是使用 babel 来生产 AST 并进行节点遍历来实现 codemod

总结

除了上面讲到的这些常见的工具、库等需要用到 babel 外,还有很多如 jestvue 等等也会有和 babel 相关的内容。总之,只要你想使用新语法、新 API,而你的产品使用用户的使用环境又存在着与你想要使用的语法的兼容问题,那 babel 基本会成为项目中必不可少的部分。

相关文章
|
6月前
|
移动开发 前端开发 JavaScript
前端开发人员必须了解的七大技能图谱
前端开发人员必须了解的七大技能图谱
120 1
|
13天前
|
缓存 前端开发 JavaScript
前端性能优化:Webpack与Babel的进阶配置与优化策略
【10月更文挑战第28天】在现代Web开发中,Webpack和Babel是不可或缺的工具,分别负责模块打包和ES6+代码转换。本文探讨了它们的进阶配置与优化策略,包括Webpack的代码压缩、缓存优化和代码分割,以及Babel的按需引入polyfill和目标浏览器设置。通过这些优化,可以显著提升应用的加载速度和运行效率,从而改善用户体验。
32 6
|
29天前
|
前端开发 API 开发者
🥇前端宝藏:多项目掌握技能的冒险之旅🏆
在前端开发的学习旅程中,实践是提升技能的关键。本文介绍了多个前端项目,包括计算器、天气应用、经典游戏等,涵盖了从React到Svelte的各种技术栈。每个项目都附有在线演示和源代码,旨在帮助读者深入理解实现细节,激励更多人参与实际项目开发。通过这些项目,读者可以将理论知识转化为实践,拓展职业机会。
16 0
|
3月前
|
存储 前端开发 JavaScript
高级前端必备技能
【8月更文挑战第17天】高级前端必备技能
33 1
|
3月前
|
存储 前端开发 JavaScript
数组操作大揭秘:Web前端开发者必备技能!
【8月更文挑战第23天】本文介绍了JavaScript中数组的基本操作方法,包括创建、添加、删除元素、获取数组长度与特定索引的元素、修改元素以及判断元素是否存在等。此外还展示了如何利用 `concat()` 方法或扩展运算符合并数组。这些实用示例有助于前端开发者更好地理解和应用数组。
30 0
|
4月前
|
移动开发 前端开发 JavaScript
高级前端工程师必备的技能
【7月更文挑战第8天】 **高级前端工程师**精通HTML5/CSS3/JavaScript,擅长React、Vue等框架,掌握性能优化、代码质量保证,能设计可扩展架构,处理前端安全,熟悉跨平台开发,持续学习新技术并领导团队,是技术与管理的结合体。他们对提升用户体验和推动技术创新起关键作用。
479 12
|
4月前
|
前端开发 JavaScript
webpack 和 babel 实用教程【前端必备】
webpack 和 babel 实用教程【前端必备】
46 0
|
6月前
|
前端开发 JavaScript API
前端工程化-babel、corejs、postcss
前端工程化-babel、corejs、postcss
73 0
|
6月前
|
前端开发 JavaScript NoSQL
从前端到后端:构建全栈开发者的必备技能
随着互联网技术的不断发展,全栈开发者的需求日益增长。本文将介绍如何从前端到后端,掌握全栈开发所需的关键技能,包括前端框架的选择、后端语言的学习以及数据库的应用,帮助读者构建成为全面的技术专家。
|
存储 SQL 前端开发
全栈工程师必须要掌握的前端JavaScript技能
作为一名全栈工程师,在日常的工作中,可能更侧重于后端开发,如:C#,Java,SQL ,Python等,对前端的知识则不太精通。在一些比较完善的公司或者项目中,一般会搭配前端工程师,UI工程师等,来弥补后端开发的一些前端经验技能上的不足。但并非所有的项目都会有专职前端工程师,在一些小型项目或者初创公司中,职能划分并不明确,往往要一个人前后端全都会做, 所以作为一名全栈工程师或者后端工程师,掌握必备的前端知识,也是必不可少的一项技能。今天就着重讲解一下,作为一名全栈工程师,前端JavaScript方面的必须要掌握的相关知识。
116 0