翻译自angular.io上的关于4.0.0版本发布的文章,内容主要是介绍了4.0.0版本下的改进以及接下来还会有的其他更新,4.0.0其实已经出来好多天了,截止目前都已经到了4.0.1版本了,这也是前两日笔者一时兴起拿想ng2写个自己的新网站时安装angular时无意发现几个模板与组件声明时的错误提示变得极其精准,一看发现angular版本居然都到4.x了并且依赖里提示还要多安装一个@angular/animation的包。看来谷歌没有食言,真的可以追赶iphone的更新脚步了。

angular 4.0.0 现在可用了
angular 4.0.0 版本现在已经悄悄的完成可用了。这是依据announced adoption of Semantic Versioning文章发布的一个主要版本,并且向下兼容绝大多数基于2.x.x版本的应用。
我们很激动的来社区分享这一发布,它包含了一些主要的提升与我们过去三个月工作完成的功能。我们致力于确保开发者能很容易的更新到这一发布版本。

什么是新的

更小&更快
这一版本我们履行了我们的诺言来让angular应用更小且更快。绝不是说现在我们已经做到了,但你会看到我们将在接下来几个月做出更远的提升。

视图引擎
我们更改了AOT方式下的代码。这些更改减少了约60%生成的组件的代码的量。你的组件越复杂,节省的代码也就越多。
在接下来的补充时期,我们听到了很多迁移到4版本的开发者反馈说他们的产品最后压缩减少了数百kb的量。
你可以在Design Doc中查看更多关于视图引擎的内容。

动画包
我们现在将动画移出@angular/core到了单独的包中。这意味着如果你不使用动画,这一额外的代码就不会被绑定到你最终的产品代码中。
这一更改同时允许你更容易的查找文档来收益于自动补全功能。你可以通过引入@angular/platform-browser/animations中的BrowserAnimationsModule来添加自己的动画到你的主NgModule中。

新特性

改进*ngIf和*ngFor
我们的模板绑定语法现在有了两个有用的改动。你现在可以使用if/else风格的语法,并且在展示一个可观察变量时分配给本地变量。
<div *ngIf="userList | async as users; else loading">
<user-profile *ngFor="let user of users; count as count" [user]="user">
</user-profile>
<div>{{count}} total users</div>
</div>
<ng-template #loading>Loading...</ng-template>

angular Universal
Universal工程允许开发者运行angular在一个服务器上,现在也更新到最新了,并且这是从Universal本本后的第一次发布,最初只是一个社区驱动的项目,现在被angular团队采用了。这一发布现在包含了Universal团队这几个月来内在的与外在的成果。主要的Universal代码现在被放在@angular/platform-server中。
为了学习更多Angular Universal的内容,可以查看新的@angular/platform-server中的 renderModuleFactory方法,或者Rob Wormald的Demo Repository。更多的文档与代码示例即将到来。

TS2.1与TS2.2兼容
我们更新了angular到更新的TS版本,这将会强化ngc的速度,你可以得到更强的类型检查支持。

模板的SourceMap
现在,当有因为你的模板代码造成的错误时,我们将会生成source map来给出有意义的原始模板上下文错误。

包更改

Flat ES Module(Flat ESM/FESM)
我们现在装载我们的模块的扁平版本(在example file查看我们代码在EcmaScript模块格式下的rolledup版本)。这一格式能帮助摇树优化,帮助减少你生成的压缩代码的大小,并且加快构建,编译与在浏览器中确定场景的速度。
在 "The cost of small modules"中查看更多关于Flat ES Modules的改进。

实验性的ES2015构建
我们同样装载我们的包在ES2015 Flat ESM 格式下。这一选项还是实验性的且可选的。开发者反馈压缩大小节省了超过7%。想要尝试这些新的包,你可以配置你的构建工具链来配置package.json中的es2015属性来替换原有的module属性

实验性的闭包兼容
我们的全部代码现在都有了闭包的注释,来帮助进行进一步的闭包优化,以得到更小的压缩代码以及更优的摇树优化。

更新到4.0.0

更新到4很简单,差不多就像是将你的angular依赖更新到最新版本,并且做两个检查如果你想要动画功能的话。这在大多数情况下都有效:

Linux/Mac下:
npm install @angular/{common,compiler,compiler-cli,core,forms,http,platform-browser,platform-browser-dynamic,platform-server,router,animations}@latest typescript@latest --save
Windows下:
npm install @angular/common@latest @angular/compiler@latest @angular/compiler-cli@latest @angular/core@latest @angular/forms@latest @angular/http@latest @angular/platform-browser@latest @angular/platform-browser-dynamic@latest @angular/platform-server@latest @angular/router@latest @angular/animations@latest typescript@latest --save

然后运行你常用的ng serve或者 npm start指令,一切都将很顺利。
如果你依赖于动画,引入@angular/platform-browser/animations中的BrowserAnimationsModule到你的根模块中。如果不这么做,你的代码也会运行,但是动画将报错。从@angular/core引入动画已经弃用了,你需要从@angular/animations中引入{ trigger, state, style, transition, animate }这些东西。

我们正在生产Angular Update Guide如果你想要查看更多你的应用需要做出的改变的话。

已知问题

4版本的一个目标是确保angular兼容TS的strictNullChecks设定,允许更严格的类型约束的子集。我们发现在RC时期这会做更多的工作来确保这能在所有使用场景下起作用,所以我们有意让4版本不兼容strictNullChecks设定,来避免急切采用这一TS模式而破坏了app,并在4.1版本时会适当的支持。(tracking issue is #15432)

下一步做什么
我们正致力于接下来六个月的路线图,依据我们在2.x版本时的 published release schedule。你将会看到我们已经开始了4.0版本来给4.0.0版本做补丁。我们将继续使angular更小且更快,并且我们将实验性的进化比如@angular/http, @angular/service-worker以及@angular/language-service这些模块的能力。

你同样应该保持关注我们的文档,包括CLI的稳定版本,以及包库作者的导览。

Angular4.0.0发布总览文章的更多相关文章

  1. Angular4.0.0正式版发布

    来源于angular4.0.0发布时的公告,译者:niithub 原文发布时间:Thursday, March 23, 2017 翻译时间:2017年3月24日 angular4.0.0正式版现在可以 ...

  2. CAP 5.0 版本发布通告

    前言 今天,我们很高兴宣布 CAP 发布 5.0 版本正式版.同时我们也很高兴的告诉你 CAP 已经有越来越多的用户并且变得越来越流行. 在 5.0 版本中,我们主要致力于更好的支持 .NET 5 以 ...

  3. Castle Core 4.0.0 alpha001发布

    时隔一年多以后Castle 项目又开始活跃,最近刚发布了Castle Core 4.0.0 的alpha版本, https://github.com/castleproject/Core/releas ...

  4. GJM : Taurus.MVC 2.0 开源发布:WebAPI开发教程 [转载]

    Taurus.MVC 2.0 开源发布:WebAPI开发教程 转载自http://www.cnblogs.com/cyq1162/p/6069020.html 因是新手  粘贴时有一个版权问题 本文原 ...

  5. 轻量级模块化开发框架 Hasor 核心模块 v0.0.2 发布

    首先引用Wiki的介绍一下Hasor:     “Hasor是一款开源框架.它是为了解决企业模块化开发中复杂性而创建的.Hasor遵循简单的依赖.单一职责,在开发多模块企业项目中更加有调理.然 而Ha ...

  6. Spring.Net.FrameworkV3.0 版本发布了,感谢大家的支持

    Spring.Net.FrameworkV3.0 版本发布了,感谢大家的支持. Spring.Net.Framework,基于.NET的快速信息化系统开发.整合框架,为企业或个人在.NET环境下快速开 ...

  7. 【AngularJS】 2.0 版本发布

    [AngularJS] 2.0 版本发布 w5cValidator[AngularJS] 2.0 版本发布   w5cValidator 插件基于angular原有的表单验证,在原有的基础上扩展了一些 ...

  8. springboot2.0(一):【重磅】Spring Boot 2.0权威发布

    就在昨天Spring Boot2.0.0.RELEASE正式发布,今天早上在发布Spring Boot2.0的时候还出现一个小插曲,将Spring Boot2.0同步到Maven仓库的时候出现了错误, ...

  9. WordPress版微信小程序3.0版发布

    距离WordPress版微信小程序上一个版本的发布过去了一个月了.在此间,我的工作有些变化,加上正在开发新版本,目前开源版的完善和升级稍稍有些滞后. 虽然这个版本是3.0版,期间有个过渡的2.8版,不 ...

随机推荐

  1. MySQL Innodb 并发涉及参数

    1 参数作用 MySQL的各个插件式引擎中,都会对事务及线程做一定的处理和优化.在Innodb引擎中,总是尝试保持 innodb内 操作系统的线程数(暂命名为innodb_thread) 应该小于或等 ...

  2. 3月题外:关于JS实现图片缩略图效果的一些小问题

    由于3月可能要结束实习,所以应该不会有特别固定的主题,另外我会在月初陆续补上上个月的番外篇Projection和TMS,作为介绍性的内容对矢量切片部分进行补充,剩下时间不定期写一些杂烩. 最近两天在做 ...

  3. Cloudera Manager安装_搭建CDH集群

    2017年2月22日, 星期三 Cloudera Manager安装_搭建CDH集群 cpu   内存16G 内存12G 内存8G 默认单核单线 CDH1_node9 Server  || Agent ...

  4. 【JSON学习之道】js操作JSON

    JSON (JavaScript Object Notation)一种简单的数据格式,比xml更轻巧. JSON 是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON ...

  5. C#读取和写入XML文件

    关于xml是属于一个比较重要的东西,在平时开发的过程中,这块内容最主要的是要掌握XML内容的读取和写入操作. 一.什么是XML? XML 指可扩展标记语言(EXtensible Markup Lang ...

  6. Selenium 显示等待和隐式等待

    1. 设置显示等待 Java代码: 1 2 3 4 5 public static WebElement WaitForElement(WebDriver driver, String locator ...

  7. 第二期培训(PING问题定位指导)心得

    一.什么是 PING DOS 命令,一般用于检测网络通与不通 ,也叫时延,其值越大,速度越慢 PING (Packet Internet Grope),因特网包探索器,用于测试网络连接量的程序.Pin ...

  8. 基于 Koa.js 平台的 Node.js web 快速开发框架KoaHub.js demo 可安装

    KoaHub.js demo KoaHub.js KoaHub.js -- 基于 Koa.js 平台的 Node.js web 快速开发框架.可以直接在项目里使用 ES6/7(Generator Fu ...

  9. 基于requirejs+bluebird,50行代码实现轻巧实用的前端CMD加载器

    首先是github地址,可以用git克隆命令也可以直接在git页面下载 https://github.com/kazetotori/js-requireAsync 下载下来后目录结构是这样的 -pac ...

  10. 记 suds 模块循环依赖的坑-RuntimeError: maximum recursion depth exceeded

    下面是soa接口调用的核心代码 #! /usr/bin/python # coding:utf-8 from suds.client import Clientdef SoaRequest(wsdl, ...