写点什么

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

  • 2016-05-09
  • 本文字数:1231 字

    阅读完需:约 4 分钟

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

Rob Wormwold Misko 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

2016-05-09 19:002174
用户头像

发布了 1008 篇内容, 共 388.0 次阅读, 收获喜欢 344 次。

关注

评论

发布
暂无评论
发现更多内容

算法喜刷刷之1021删除最外层的括号

Kylin

算法 28天写作 3月日更 21天挑战

JDBC—连接数据库工具类(JDBC_Utils)

打工人!

Java JDBC java工具类 操作数据库

SD-RTN——毫秒级网络加速带来全新的体验

anyRTC开发者

android 5G 音视频 WebRTC RTC

有道精品课实时数据中台建设实践

有道技术团队

大数据

《Out of Tar Pit》总结

陈皓07

万象:百度的海量多媒体信息处理系统

百度开发者中心

#富媒体# #信息系统#

智汇华云 | ArcherOS Stack共享存储虚拟化技术剖析

华云数据

《Redis 核心技术与实战》学习笔记 03

escray

redis 学习 28天写作 3月日更 Redis 核心技术与实战

京东M-PaaS平台之Android组件化系统私有化部署改造实践

京东科技开发者

系统架构 mPaaS

智慧物流迎利好,当代电商倒逼传统产业链变革升级

一只数据鲸鱼

物联网 数据可视化 供应链 智慧城市 智慧物流

【LeetCode】翻转链表Java题解

Albert

算法 LeetCode 28天写作 3月日更

化蛹成蝶,华为云DevCloud助力互联网+转型,重构钢铁产业链

华为云开发者联盟

Scrum 代码 华为云 devcloud 敏捷管理

BI掌柜系统开发案例详情丨BI掌柜开发源码功能

系统开发咨询1357O98O718

B2B 产品市场中「价值营销」的 8 个关键词

To B Park

Github上2021最新最全面的面试题库(Java岗)程序员不容错过

比伯

Java 编程 程序员 架构 面试

告别交通拥堵和数据孤岛,区块链成智慧交通发展新基石

旺链科技

区块链应用 智慧交通

阿里P8大牛手把手教你!这是一份面向Android开发者的复习指南,快来收藏!

欢喜学安卓

android 程序员 面试 移动开发

NA公链双重隐私技术为NAC公链护航涅磐

区块链第一资讯

区块链 公链 挖矿

这可能是今年最值得入手的一本思维导图书

博文视点Broadview

飞桨刷新分子性质预测榜单,助力AI药物研发

百度大脑

百度 AI 飞桨

EGG公链——ETFalk开启了新一代去中心化社交革命

币圈那点事

编译android源码!2021年Android面试心得,学习路线+知识点梳理

欢喜学安卓

android 程序员 面试 移动开发

JDBC—配置SQLyog

打工人!

MySQL JDBC SQLyog

php in_array的低性能

架构精进之路

php 3月日更

鲸品堂开篇

鲸品堂

行业资讯 通信 科技

数仓集群管理:单节点故障RTO机制分析

华为云开发者联盟

GaussDB 集群 GaussDB(DWS) RTO 单节点故障

高效使用Chrome浏览器,你可能不知道的10个技巧。

彭宏豪95

chrome 效率 浏览器 使用技巧

登顶GLUE榜单的文心又开课了,一站式教学搞懂信息抽取

百度大脑

百度大脑 GLUE 信息抽取 EasyDL

比电脑屏保还酷?在电脑桌面实时显示当前时间。

彭宏豪95

效率 效率工具 时间 应用 桌面时钟

Linkis 1.0.0-RC1 版本发布

康月牙

孤寡程序猿找女朋友的方法论

不脱发的程序猿

程序员 找对象 28天写作 3月日更 脱单

ng-conf 2016大会深入介绍了新的Angular编译器_JavaScript_David Iffland_InfoQ精选文章