为了放心迎接2017年,检查最新的Angular动向
面向忙碌的人整理了一下
-
- Angularは破壊的変更を含む可能性のあるメジャーアップデートを 半年に1回 に定めました
-
- 次のメジャーアップデートは3月1日予定です
-
- 諸事情により来年3月にリリースされるのはAngular 4.0.0です
-
- 2.xで書いてるものは基本壊れないから怯えないで
- あとAngular2 って呼ばないで! Angular だから!
有时间的人,请从这里开始阅读。
你好,我是laco。我是ng-japan的代表。
嗯,对于Angular社区来说,2016年是非常重要而多变的一年。与去年的这个时候相比,情况发生了不可思议的变化。即使是像笔者这样日常关注动态的人,也多次被突如其来的重大宣告所震惊。但幸运的是,Angular最终还是成功发布了2.0版本,终于让社区和生态系统走上了正轨。
本文将回顾激动人心的2016年,并介绍最新的趋势和未来的更新内容(暂定),以便让大家安心迎接2017年。
回顾2016年的Angular
让我们将各种活动按照时间顺序随意排列起来。
2015年12月 (wǔ èr yī wǔ shí èr yuè)
-
- Angular 2.0.0-beta.0のリリース
- “Offline Compilation”のプロポーザルが初めて公開される
2016 年的一月
-
- Angular 2.0.0-beta.1のリリース
-
- AngularのソースコードライセンスがMITに変更される (公式ブログ)
-
- 「2016年中にAngular2を完成させる」と宣言
-
- Angular Material2の開発がスタート
-
- Routerのアップデートの計画が上がる(のちのRouter v2)
- Angular 2.0.0-beta.2のリリース
2016年二月
-
- Angular 2.0.0-beta.3のリリース
-
- AngularJS用のComponent Routerがリリースされる
Angular 2.0.0-beta.4,5,6のリリース (バグ混入のため連続リリース)
Template Language Serviceの構想が発表される
@angular/http がangular/httpリポジトリに移される
Angular 2.0.0-beta.7のリリース
ng-nlがオランダで開催される
2016 年三月 (2016 yuè)
-
- BatarangleがAngular2に対応
Angular 2.0.0-beta.8のリリース
replaceパイプが追加される
海外のニュースサイトに「GoogleがAngularのFinalリリースの準備をしている」と報じられる(記事)
Angular 2.0.0-beta.9,10のリリース
メタデータからのコード生成による高速化の実装がスタート
ng-japan 2016が開催される
Angular 2.0.0-beta.11,12のリリース
@View 廃止
Angular 2.0.0-beta.13のリリース
还只是三月哦,越来越快地过去了。
2016年四月
-
- Angular 2.0.0-beta.14のリリース
-
- Material 2.0.0-alpha.2のリリース
-
- Angular-CLIのデザインドキュメントの作成がスタート
-
- Angular 2.0.0-beta.15のリリース
Angular 2.0.0-beta.16,17のリリース
Locationクラスが angular2/routerからangular2/platform/common に移動
Compilerの廃止とComponentFactoryの導入
#…シンタックスの仕様変更とlet-/ref-シンタックスの追加
NgTemplateOutletの追加
2016年五月
Angular 2.0.0-rc.0,1のリリース
npmパッケージを @angular/スコープ配下に移動
angular/routerを@angular/router-deprecatedに移動
angular2/alt_routerを@angular/routerに移動
platform-browserとplatform-browser-dynamicの分割
ng-conf 2016が開催される
新しいForm APIのデザインドキュメントが公開される
最终RC版本已经开始发布,但仍然是在五月份。
2016年六月
Router 3.0.0-alpha.3のリリース
angular/vladivostokで開発が開始
Angular 2.0.0-rc.2のリリース
の導入
ngSwitchWhen が ngSwitchCase に改名
@angular/commonのForms APIが非推奨になる
@angular/formsパッケージの導入
パッケージごとに.umd.jsを配布するようになる
Animation APIの導入
Angular 2.0.0-rc.3のリリース
2016年七月 (2016 qī yuè)
Angular 2.0.0-rc.4のリリース
@angular/core/testingからitやdescribeなど多くのAPIが削除される
Router 3.0.0-beta.0のリリース
dataとresolveの機能が実装される
二零一六年八月
Angular 2.0.0-rc.5のリリース
NgModuleの導入
プートストラッピングが platformBrowserDynamic().bootstrapModule(MyAppModule); に
TestInjectorの廃止とTestBedの導入
アニメーションのトリガーシンタックスが [@trigger] に変更される
Routingのイベントでアニメーションをトリガーできるようになる
@angular/compiler-cliの導入
Router 3.0.0-rc.1,2のリリース
2016 年九月 (2016 jiǔ yuè)
Angular 2.0.0-rc.6のリリース
ES Module形式でnpmパッケージを配布するように変更
@Component.directives/pipesの廃止
プロバイダの宣言が {provider: MyClass, toFactory: …} に統一される
replaceパイプの廃止
Angular 2.0.0-rc.7のリリース
9/14 Angular 2.0.0のリリース
Semantic Versioningの導入を宣言
半年に1回のメジャーアップデートを宣言
呼称をAngularに統一することを宣言
Angular-CLIがwebpackに対応
Angular 2.0.1/2.1.0-beta.0のリリース
RouterにPreloading機構を導入
AngularConnect 2016がロンドンで開催
2016年10月 yuè)
-
- Angular 2.0.2/2.1.0-rc.0のリリース
-
- Angular 2.1.0のリリース
-
- 今後のバージョニングとリリースサイクルについての記事を公開(公式ブログ)
Angular 2.1.1/2.2.0-beta.0のリリース
RouterがAngularJSとの共存をサポート
Angular 2.1.2/2.2.0-beta.1のリリース
@angular/upgradeのAPIの多くが@angular/upgrade/staticに移動
Angular Universalのコア部分をangular/angularリポジトリに移動することを発表
2016年11月 yuè)
-
- Angular 2.2.0-rc.0のリリース
Angular 2.2.0のリリース
ngUpgrade APIがAoTコンパイルをサポート
Angular 2.2.1/2.3.0-beta.0のリリース
Angular 2.2.2のリリース
Angular 2.2.3のリリース
Angular 2.2.4/2.3.0-rc.0のリリース
@angular/language-serviceモジュールの導入
ComponentやDirectiveなどのクラスで継承が正しく動作するように修正される
2016年12月
Angular 2.3.0のリリース
最後のマイナーバージョンアップになるはずだった
次期メジャーバージョンが4.0.0であることを発表
Angular 2.3.1/4.0.0-beta.0のリリース
Angular 2.4.0のリリース
RxJSが 5.0.1安定版リリースしたため慌ててアップデート
Angular 2.4.1/4.0.0-beta.1のリリース
所以回顾一年来,去年这个时候还处于beta.0阶段,而现在的AoT编译已经变成了常态,这还只是概念阶段。真是世事难料啊。
2017年的Angular
为了所有耐心阅读的喜欢Angular的人们,我将在我现在所了解的范围内介绍下一个主要版本4.0以及未来计划和构思。
服务员和渐进式Web应用程序(PWAs)。
听说Angular mobile-toolkit即将推出beta版本。mobile-toolkit是一个为将Angular应用转换为PWA提供便利工具的库,它将Service Worker的API作为Angular服务提供,还可以自动生成项目配置并生成manifest.json文件。
最开始我们宣布mobile-toolkit的beta版本将在2016年年中发布,但由于@angular/app-shell与Angular Universal的依赖进展不顺利,所以可能需要更多时间。
ngIf的新功能可以翻译为「ngIf的新增特性」。
从版本4开始,ngIf被增强,现在可以使用else和then。此外,还可以将右侧表达式的计算结果作为本地变量使用。如果你不理解这个意思,我可以给你贴上示例代码。
<!-- これまでのngIf -->
<div *ngIf="show"></div>
<!-- elseを使って右辺の式を満たさないときのテンプレートを宣言する -->
<div *ngIf="show; else elseBlock"></div>
<template #elseBlock></template>
<!-- thenを使って右辺の式を満たすときのテンプレートを分離する -->
<div *ngIf="show; then thenBlock; else elseBlock"></div>
<template #thenBlock></template>
<template #elseBlock></template>
<!-- 右辺の計算結果をテンプレートローカル変数に割り当てる -->
<div *ngIf="someValue(); let val">
{{ val }}
</div>
这些是2017年Angular核心团队的一项名为Reactive Angular的举措之一。通过使用let,可以将计算结果分配给变量,从而增加与async pipe的亲和性。这个举措的主要目的是减少在模板中使用async pipe的次数。
<!-- こういうテンプレートが書けるようになる -->
<div *ngIf="user$ | async; else loading; let user">
Hello {{user.last}}, {{user.first}}!
</div>
<template #loading><img src="/images/loading.gif"></template>
DOM事件的冷可观察性转化语法支持
我們將介紹另一個目前正在討論中的功能,來自Reactive Angular。目前的事件綁定(如click)在內部實際上是通過addEventListener進行事件訂閱的。換句話說,當組件被生成時,addEventListener會被自動調用,無法控制事件處理的開始時間。如果能將DOM事件作為Cold Observable提取出來,通過新的模板語法,可以延遲訂閱(使用明確的subscribe方法等),直到需要訂閱時才轉為Hot Observable;同時也可以通過取消訂閱,在任意時間停止對事件的訂閱。
为了增强与RxJS的兼容性,这个功能非常重要,但目前正处于关于语法的讨论阶段。
https://github.com/angular/angular/issues/13248
如果你有兴趣,可以去看看,并发表自己的意见。
现在能做的事情,是为了迈向4.0版本做准备。
没有。如果非要说的话,就是对于足够的项目来说,可以考虑转到Angular-CLI进行开发。原因是即使在升级到4.0版本之后,现有的2.x版本的API也不会消失。对于熟悉Angular的人来说,这是常识。根据Angular的API非推荐政策,即使在4.0版本中将有API被标记为非推荐,但实际删除将推迟到6.0版本。最近在日本,核心团队的Rob Warmold发布的幻灯片非常易懂。
换言之,当4.0版本发布后,我们可以花上一年时间慢慢考虑,不用担心。就用现有的功能度过这个冬天吧。
总结
對於一直追蹤 Angular 2 從 alpha、beta 到 rc.5 的大家,以及對於被 NgModule 搞得疲憊不堪的大家,辛苦了,結果很不錯。
当前的Angular已经变得非常好了。随着Material2的beta发布和Universal的并入核心,作为平台的Angular将会进一步发展成为更加强大的生态系统。我认为,2017年将能在今年相对平静、适度紧张的氛围下与Angular和谐相处。
祝您新年快乐。