BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

ng-conf 2016大会深入介绍了新的Angular编译器

| 作者 David Iffland 关注 3 他的粉丝 ,译者 谢丽 关注 8 他的粉丝 发布于 2016年5月10日. 估计阅读时间: 4 分钟 | QCon北京2018全面起航:开启与Netflix、微软、ThoughtWorks等公司的技术创新之路!

亲爱的读者:我们最近添加了一些个人消息定制功能,您只需选择感兴趣的技术主题,即可获取重要资讯的邮件和网页通知

ng-conf 2016大会第二天以一场技术性很强的主题演讲拉开了序幕。Angular团队成员登台,深入介绍了Angular 2。

Rob WormwoldMisko Hevery主要谈论了新的离线编译步骤。Wormwold展示了两种编译模式:动态和静态。动态模式就是Angular开发人员熟悉的模式。框架被发送到浏览器,所有的编译都是在那里进行的。在这种模式下,Angular净负荷大约为116K。

对于该离线静态编译器,有几个步骤可以将净负荷减小到49K(最终应该是45K)。

Hevery列举了新编译器的其中几个好处:

由于我们已经使用JavaScript重写了解析器,所以我们可以让它对大小写敏感。这就是为什么,在Angular 2中,你不必使用ng-if,只需使用ngIf。我们还可以提供行号。我们知道特定的标记或控制器来自哪里。如果有异常,我们可以给出行号和列号。

这个新的编译系统仅使用了JavaScript,没有任何DOM依赖,因此,它可以在任何地方运行,包括浏览器、服务器和其他任何运行JavaScript的地方。Hevery表示,由于新编译器生成的代码是“单体的(monomorphic)”,所以浏览器VM可以内联函数调用点,“极大地提升速度”。

新编译管道由以下四个步骤组成:

  • 编译
  • 内联
  • Tree-Shake
  • “最小化(Minify)”

编译和最小化是这样一个过程里的典型步骤,但内联和tree-shaking是新增的步骤。内联会将所有导出和导入的各种模块合并到一个文件中。它不是简单的串联。Hevery说,“我们说的是取得各个符号,然后将它们放在一起”。

目前,Tree-shaking步骤使用了一个名为RollUp的工具,检查那个仅有的文件,剔除永远用不到的代码。这极大地较少了程序包中的代码量,因为除了其他原因外,Angular编译器本身固有的东西也会被移除。Hevery说道:

Tree shaker会跟踪[代码],只保留确实存在引用的符号。因为我们使用了[离线编译器],没有引用ng编译器,所以它会被自动排除出去。实际上,我们还可以排除其他东西。如果你没有在应用程序中使用ngFor或ngIf,那么我们也可以不包含它。我们只包含这个应用程序真正需要的东西。

从版本1到版本2,Angular完全重写了,这给社区带来了许多痛苦,Angular团队希望那种情况永远不再出现。Alex Eagle上台谈了谷歌内部使用的重构工具,该工具可以保证其应用随Angular本身的变化而升级。他们希望向社区提供类似的东西。Eagle说道:

我们可能保证Angular长盛不衰吗?通过及时更新框架以及让所有用户和我们保持同步,我们可以避免与“Angular 3”打交道吗?

该工具使用了TypeScript语言服务、新编译器和解析器为应用的TypeScript和HTML/CSS文件创建“源码修订建议”。Eagle说,“那些修订足以纠正我们眼下在框架中造成的破坏”。为此,Angular团队宣布,他们“计划构建”一套公共的工具,对于框架中的每一项破坏性变化,“一整套的升级选项可以帮你从现在正在使用的任何版本升级到最新版本。”

感兴趣的读者可以在YouTube上观看ng-conf 2016大会第二天主题演讲的完整视频。

查看英文原文Deep Dive Into New Angular Compiler at ng-conf 2016

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT