1.從移動app開發上面分析:
Angular 1.x 專注於web開發,沒有涉及到移動這方面的內容,還好後來殺出個程咬金IONIC移動app開發框架,讓angularjs1.x很好的支持了移動開發
Angular 2目標:原生移動支持 – iOS 和 Android
Angular 2 會有兩層,應用層和渲染層。例如一個組件可以用不同的 @View 修飾器修飾,根據運行環境可以在運行時生效。
與 React Native 一樣,Angular 2 支持:
一次學習,到處書寫。
這意味着創建原生應用時可以重用你在創建 web 應用時學習的知識。儘管總是有些區別。
2.從服務器端渲染提供支持分析:
支持服務器端的渲染對於搜索引擎的優化和用戶感知體驗來說是非常重要的;在一個比較大型的Angular 1 的應用中,即使使用了預先定義的緩存模塊,我們可以清楚地看到當應用開始啓動時,頁面的加載過程。
這時候看來 Angualr2 的這部分特徵不是很清晰明朗,但是這種思路或許可以從以下幾個方面得到體現:
啓動開始, 同時所有的組件都被綁定
而渲染沒有實現
一個頁面在服務器被渲染後 , 然後發送到客戶端
Angular 將會把它解析 ,接着會吧解析後的頁面注入到 DOM 中,這樣就避免了出現閃爍的效果
3.從依賴注入分析
在Angular 1 的世界裏,依賴注入在構建多模塊應用時是一項技術的飛躍, 但是在一些極端的案例中,如果不做出一些重要的變化是不能解決這些問題的。
Angular 1.x 包含對象全局池
Angular 1 其中一個 DI 案例中每個應用僅有一個對象全局池。這就意味着,如果說主路由 loadsbackendService 我們導向了路由 B,可以延遲加載其他服務指定到這個路由。
問題就是,我們說可以延遲加載一個 secondbackendService,使用完全不同的實現:這就會重寫第一個!當前還沒有辦法同一名字有兩個不同實現的兩個服務,這就會阻止用一個安全的方式從 Angular 1 實現延遲加載。
Angular 1 會靜默重寫模塊,當他們有相同的名字
這是一個特性,允許在測試的時候模擬替換服務層的服務,但是如果恰巧在同一模塊加載了兩次就會發生問題。
Angular 1.x 的多重依賴注入機制
在 Angular 1 中, 我們可以使用在多重地方使用不同的方法進行注入:
在鏈接方法中通過位置注入
在直接定義中通過名字注入
在controller方法中通過名字,等等。
Angular 2 將會作出怎樣的該進
而在 Angular 2 中有且僅有一種依賴注入機制: 在構造函數中通過類型注入。
constructor(keyUtils: KeyboardUtils) {
this.keyUtils = keyUtils;
}
});
事實上,如果只有一種機制,那麼它將變得更加容易學習。同時這種依賴注入器是類似層級結構,在不同層次的組件樹,有可能實現對相同類型的不同實現。
如果一個組件沒有定義依賴,它會代理給上層注入器查找依賴,依次往上。這讓 Angular 2 提供原生的懶加載成爲可能
4.從主要目標分析
Angular 2 的主要目標是創建一個簡單易用並且快速工作的 web 框架。讓我們看看這是如何達到的:
目標:更易於推論
在當前版本的 Angular 中,我們有時不得已對應特定的使用場景推論框架內部構建,比如必須推論應用事件初始化和摘要循環:
在 Angular 1 中沒有摘要循環結束事件 (查看原因),因爲這種事件可能會促發更多的變化,以至於使摘要循環持續下去
我們必須推論何時調用 $scope.apply 或 $cope.digest,而這並不總是容易的
有時我們必須調用 $timeoutto讓Angular 結束摘要循環,當 DOM 穩定時再做一些操作
爲了使 Angular 2 更易於推論,一個目標是創建更多開箱即用的透明內部構建。開始之前,讓我們看看 Angular 1 的綁定機制是如何實現的,然後如何使它更透明。
話說:Angular1.x顯然非常成功,那麼,爲什麼要劇烈地轉向Angular2?
1.性能的限制
AngularJS當初是提供給設計人員用來快速構建HTML表單的一個內部工具。隨着時間的推移,各種特性 被加入進去以適應不同場景下的應用開發。然而由於最初的架構限制(比如綁定和模板機制),性能的 提升已經非常困難了。
2.快速變化的WEB
在語言方面,ECMAScript6的標準已經完成,這意味着瀏覽器將很快支持例如模塊、類、lambda表達式、 generator等新的特性,而這些特性將顯著地改變JavaScript的開發體驗。
在開發模式方面,Web組件也將很快實現。然而現有的框架,包括Angular1.x對WEB組件的支持都不夠好。
3.移動化
想想5年前……現在的計算模式已經發生了顯著地變化,到處都是手機和平板。Angular1.x沒有針對移動 應用特別優化,並且缺少一些關鍵的特性,比如:緩存預編譯的視圖、觸控支持等。
4.簡單易用
說實話,Angular1.x太複雜了,學習曲線太陡峭了,這讓人望而生畏。Angular團隊希望在Angular2中將複雜性 封裝地更好一些,讓暴露出來的概念和開發接口更簡單。