为了放心迎接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发布的幻灯片非常易懂。

image

换言之,当4.0版本发布后,我们可以花上一年时间慢慢考虑,不用担心。就用现有的功能度过这个冬天吧。

总结

對於一直追蹤 Angular 2 從 alpha、beta 到 rc.5 的大家,以及對於被 NgModule 搞得疲憊不堪的大家,辛苦了,結果很不錯。

当前的Angular已经变得非常好了。随着Material2的beta发布和Universal的并入核心,作为平台的Angular将会进一步发展成为更加强大的生态系统。我认为,2017年将能在今年相对平静、适度紧张的氛围下与Angular和谐相处。
祝您新年快乐。

广告
将在 10 秒后关闭
bannerAds