写点什么

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:002187
用户头像

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

关注

评论

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

一周信创舆情观察(12.6~12.12)

统小信uos

百度王海峰:深耕自然语言处理近30年,推进AI融合创新

百度开发者中心

自然语言处理

【实战】网络安全学习:内网渗透实例

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 内网渗透

Android C++系列:Linux Socket编程(三)CS模型示例

轻口味

28天写作 12月日更

分布式架构与性能优化

高性能架构探索

分布式 微服务 性能优化 内容合集 签约计划第二季

京东云ClickHouse和ES双引擎设计在零售选品中的应用实践

京东科技开发者

【Spring Boot 快速入门】二、Spring Boot集成MyBatis可以连接数据库啦!

小阿杰

SpringBoot 2 mybatis配置 内容合集 签约计划第二季

国产分布式数据库StarDB核心技术大揭秘二:智能运维管控

京东科技开发者

【Spring Boot 快速入门】五、Spring Boot集成Lombok

小阿杰

SpringBoot 2 lombok 内容合集 签约计划第二季

滨海中小企业协会参加新区工商联(总商会)第四次代表大会

InfoQ 天津

优秀的代码的分层结构

xcbeyond

架构 28天写作 12月日更

潮玩盲盒一番赏盲盒星球app专业源码搭建

风行无疆

京东云PostgreSQL在GIS场景的应用分享

京东科技开发者

【Spring Boot 快速入门】一、周末建立了Spring Boot专栏,欢迎学习交流

小阿杰

SpringBoot 2 spring Boot Starter 内容合集 签约计划第二季

Explore the Sky丨来 TiDB Hackathon 2021 探索无限可能

PingCAP

Go 数据库 hackathon TiDB database

最好用的七大顶级 API 接口测试工具

蒋川

API 测试工具

多点 DMALL x StarRocks:实现存储引擎的收敛,保障高查询并发及低延迟要求

StarRocks

数据库 数据分析 高并发 StarRocks

Go 语言快速入门指南:第一篇 介绍

宇宙之一粟

Go golang 编程入门 签约计划第二季 12月日更

记录我开发工作中遇到HTTP跨域和OPTION请求的一个坑

汪子熙

JavaScript ajax 跨域 28天写作 12月日更

【Spring Boot 快速入门】三、Spring Boot集成JUnit

小阿杰

SpringBoot 2 JUnit 内容合集 签约计划第二季

Rainbond 5.5 发布,支持Istio和扩展第三方Service Mesh框架

北京好雨科技有限公司

istio PaaS rainbond

行业分析| 泛娱乐应用出海探索

anyRTC开发者

音视频 语音通话 视频直播 视频通话 泛娱乐

Apache Log4j 2 安全漏洞扫描及启示录

极狐GitLab

gitlab 安全 供应链 漏洞扫描 Apache Log4j 2

ClickHouse在工业互联网场景的OLAP平台建设实践

京东科技开发者

点击下载 | 世界经济论坛全新推出深度AI洞察报告

澳鹏Appen

人工智能 机器学习 深度学习

Istio在Rainbond Service Mesh体系下的落地实践

北京好雨科技有限公司

istio PaaS rainbond

一篇教你代码同步 Github 和 Gitee

冴羽

JavaScript GitHub 自己搭建博客网站 GitHub Pages vuepress

【Spring Boot 快速入门】四、Spring Boot集成Swagger UI

小阿杰

SpringBoot 2 swagger 内容合集 签约计划第二季

探探的IM长连接技术实践:技术选型、架构设计、性能优化

JackJiang

网络编程 websocket 即时通讯 IM

SD-WAN、SASE 和多云空间的未来趋势

devpoint

5G SD-WAN sase 12月日更

国产分布式数据库StarDB核心技术大揭秘一:内核分解之数据分片

京东科技开发者

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