2019-2021 美团技术年货 前端篇
结构变得清晰,只需要维护配置解析、插件解析等功能。 ● 扩展性增强,可通过插件化的形式新增或删减容器 / 编译能力,保证代码独立 维护功能的单一性。 ● 编译流程可梳理,无论什么容器的编译流程都基于编译器暴露的时机执行并串 联,整体流程清晰明了。 4.1.2 组件及 API 的设计 R2X 的目的是希望通过一套代码能够在多端上运行,但是由于多端差异的存在,我 们需要设计一套统一的标准规范来进行对齐。在运行时部分,主要分为组件 arguments> -c some-file.m -o some-file.o -v 在 console 的输出内容中,我们会发现一段有意思的内容: 前端 < 99 通过上面的图,我们可以看到编译器将寻找头文件的顺序和对应路径展示出来了,而 在这些路径中,我们看到了一些陌生的东西,即后缀名为 .hmap 的文件,后面还有 个括号写着 headermap。 没错!它就是 Header Map 重复引用的能力而已。 为了更好的理解后面的内容,我们这里需要展开说一下它到底是如何运行的? 从最直观的角度来看: 假设在 MyApp.m 文件中,我们 #import 了 iAd.h 文件,编译器解析此文件后,开 始寻找 iAd 包含的内容(ADInterstitialAd.h,ADBannerView.h),及这些内 容包含的子内容(UIKit.h,UIController.h,UIView0 码力 | 738 页 | 50.29 MB | 1 年前3阮一峰 《ECMAScript 6入门》 第三版
"browserify": { "transform": [["babelify", { "presets": ["latest"] }]] } } 在线转换 Babel 提供一个REPL在线编译器,可以在线将 ES6 代码转为 ES5 代码。转换后的 代码,可以直接作为 ES5 代码插入网页运行。 与其他工具的配合 许多工具需要 Babel 进行前置转码,这里举两个例子:ESLint 和 面可以使用 ES6 代码。 注意,第四个 script 标签的 type 属性的值是 module ,而不 是 text/javascript 。这是 Traceur 编译器识别 ES6 代码的标志,编译器会自 动将所有 type=module 的代码编译为 ES5,然后再交给浏览器执行。 除了引用外部 ES6 脚本,也可以直接在网页中放置 ES6 代码。