不知道babel提起babel,你会想到什么?可以将项目中的es6、es7等代码转换成目标环境支持的代码。它可以自动填充目标环境不支持的API。Taro(小程序翻译工具)是基于babel实现的。babel插件非常丰富。我们公司现在用babel编译Typescript,不需要tsc。做了基于babel的自动埋点功能,得到了领导的表扬。。。其实babel能做的还不止这些,它可以做3类事情:translateesnext,typescript,flow等,直到目标环境支持js是最常用的函数,用于将代码中的esnext、typescript、flow等新语法转换成基于目标环境支持语法的实现。它还可以填充目标环境不支持的API。babel7支持preset-env,可以指定target进行按需转换,转换更准确,积更小。一些特殊用途的代码转换Babel是一个转译器,暴露了很多API,可以用来完成代码到AST的解析、AST转换和目标代码生成。开发者可以使用它来完成一些针对特定用途的转换,比如函数检测(自动在函数中插入一些代码,比如嵌入代码)、自动国际化、默认导入到命名导入等。现在流行的小程序翻译工具taro是基于babel的api实现。代码的静态分析代码解析后,可以进行转换,因为可以通过AST的结构来理解代码。理解代码后,除了可以转换生成目标代码外,还可以用来分析代码的信息,进行一些检查。babel还能做什么?Babel是前端业务开发和工具链开发中不可或缺的工具。我们每天都在使用它,但是你有没有想过这些问题:如何写一个babel插件来做自定义代码转换?babel在业务开发中可以用在哪些地方做自动化?babel是如何实现的?linter是如何实现的?打字稿类型检查是如何实现的?压缩混淆工具的原理是什么?打包工具如何分析代码依赖关系?api文档是如何自动生成的?以上这些都可以用babel来实现。可能你从来没有想过babel有这么大的能量。学习babel,绝对让你提升一个档次。基于babel实现一个完整的工具链来看看这些工具的实现思路(下面列出的所有工具在github上都有实现代码)packages通过这种方式,babel可以解析代码中的字符串字面量,将其替换为函数调用语句,然后自动导入资源包。基于babel,我们可以实现自动国际化。自动生成api文档我们在编写api的时候,会在上面添加注释,那么我们是否可以提取这些注释的内容以及关联的函数和类信息,使用一定的模板来生成api文档呢?是的,babel可以做到。对于linter,我们整天用eslint和stylelint检查代码规范。事实上,他们只是检查AST,我们可以用babel做到这一点。你可以基于babel实现eslint。类型检查器typescript将静态类型信息添加到代码中。可以在编译时进行类型检查,也可以辅助代码的智能提示。现在基本上是前端必备的技能了。但是你有没有想过typescript是如何实现的呢?小册子里,我们会手写一个ts类型检查器,让你真正看懂typescript!压缩和混淆前端代码的生产必须进行压缩和混淆。我们整天都在用这个,但是你知道它的实现原理吗?能不能用babel来实现。答案是肯定的,在小册子中我们会实现压缩和混淆的功能。js解释器v8引擎的实现原理是什么,解释型语言是如何解释代码的。我们可以实现一个js解释器吗?是的,我们会在《babel 插件通关秘籍》小册子中实现一个基于babel解析器的js解释器。手写babel大家可能会问,上面都是基于babel的,没有babel怎么办?没有babel,我们就实现一个babel。在小册子的最后,我们将实现一个简单但好用的babel,让你真正了解babel的原理,掌握babel。上面的解释器和类型检查的内容,王音卖12000,见下图,所以这本小册子绝对物超所值。大纲中提到了很多小册子的内容,下面是小册子的完整目录:notjustbabel虽然上面的实战是基于babel,但是你学到的只是babel?这不,上面的实战案例涉及到完整的工具链,从文档生成、lint、类型检查、压缩混淆到js解释器等等,几乎是一个前端开发的闭环。以此为起点,我学到的是整个工具链的实现。以上工具还是集中在前端领域,但是翻译人员的实现思路确实是通用的。编译原理主要是学习编译器、翻译器、解释器三个部分。相信也能帮助大家学习完整的小册子。您开始了解编译原理。综上所述,babel几乎是前端领域的必备工具。基于它,它可以完成很多功能,甚至构建整个工具链。在小册子中,我们将实现linter、typecheker、压缩混淆、自动生成api文档、js解释器等一系列功能。其中解释器和类型检查的功能在网银可以卖到12000。相比之下,这本小册子的内容和价格绝对良心。如果babelapi是一种技术,那么基于babel学到的编译原理和工具链实现思想,就是道。掌握了babel,掌握了工具链,掌握了编译原理,绝对能让你提升一个层次。
