【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

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

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

关注

评论

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

中文多模态医学大模型智能分析X光片,实现影像诊断,完成医生问诊多轮对话

汀丶人工智能

人工智能 自然语言处理 计算机视觉 多模态大模型

在Go中使用Arm的SIMD指令

geange

Go 汇编 neon arm64

PoseiSwap:通过 RWA 的全新叙事,反哺 Nautilus Chain 生态

鳄鱼视界

云原生大数据平台CloudEon V1.1.0版本发布!

CloudEon开源

大数据 云原生 容器化

ShareSDK 国外平台登陆返回参数

MobTech袤博科技

前端 App

人工智能如何应对 DevOps 监控和可观测性挑战

SEAL安全

人工智能 DevOps 运维

柴洪峰院士:大模型赋能金融科技思考与展望

NLP资深玩家

人工智能 金融科技 大模型 WAIC

​加速大规模团队创新,开发安全、可靠、合规的汽车软件

龙智—DevSecOps解决方案

ACT汽车电子与软件技术周 汽车电子与软件技术周

小程序开发技术解析:事件系统设计

Onegun

小程序 事件 小程序开发

大会议程正式公布 华为开发者大会看点前瞻

Geek_2d6073

Sprint Boot学习路线2

小万哥

Java spring Spring Cloud Spring Boot 后端

ChatPaper全流程加速科研:论文阅读+润色+优缺点分析与改进建议+审稿回复

汀丶人工智能

人工智能 自然语言处理 nlp chatpaper

PoseiSwap:通过 RWA 的全新叙事,反哺 Nautilus Chain 生态

威廉META

C++异步编程开源项目Workflow三岁啦 \^0^/

1412

开源项目 异步编程 异步任务编程 workflow C++

低代码平台什么意思

优秀

低代码平台

配置 Sublime Text4为 C++ 编辑器的方法

二哈侠

在 Amazon DocumentDB 里处理 Decimal128类型数据的解决方案

亚马逊云科技 (Amazon Web Services)

javascript数组基础

timerring

JavaScript

时序数据库 TDengine 被帆软纳入数据源,可视化方案多样化

爱倒腾的程序员

数据库

金蝶管易云 X Hologres:新一代全渠道电商ERP最佳实践

阿里云大数据AI技术

ERP

静态分析全解析:助力高质量软件开发,降低成本风险

龙智—DevSecOps解决方案

静态分析 静态代码分析 静态代码分析工具

小白也能基于OpenAI搭建自己的英语学习工具

派大星

openai

北岩律师事务所:50000余家客户的选择,全国首家专注大消费领域的精品律所

联营汇聚

惊喜!1行Python代码,瞬间测你工作量,分享一个统计代码行数的神器

程序员晚枫

Python GitHub 开源项目 工作量

不用再写FlinkSQL了,使用开源XL-LightHouse轻松实现海量数据实时统计

feng

大数据 流式计算 流式大数据统计 流式统计 企业数据化运营

MySQL5.7和MySQL8.0的区别是什么?

百度搜索:蓝易云

云计算 Linux 运维 MySQL 5.7 MySQL 8.0

平台工程动态 MonthlyNews 2023-7

杨振涛

云原生 研发效能 平台工程 开发者体验 内部开发者平台

加速数字化转型:龙智专家分享DevSecOps和ITSM工具性能优化策略——2023 DevOps国际峰会现场访谈

龙智—DevSecOps解决方案

DevSecOps devops国际峰会

远程控制软件安全吗?一文看懂ToDesk、RayLink、TeamViewer、Splashtop相关安全机制

颜淡慕潇

安全 远程控制 远程桌面工具 ToDesk

【Linux工具】yum和gdb详细使用教程。

百度搜索:蓝易云

云计算 Linux 运维 yum 云服务器

Requests+Etree+BeautifulSoup+Pandas+Path+Pyinstaller应用 | 获取页面指定区域数据存入html、excel文档

Python pandas pyinstaller requests BeautifulSoup

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