AngularJS 2.0會有哪些新特性?

iteye發表於2015-03-06

  AngularJS已然成為Web應用開發世界裡最受歡迎的開源JavaScript框架。自成立以來,見證其成功的是驚人的經濟增長以及團體的支援與採用——包括個人開發者、企業、社群。

  Angular已經變成一個構建複雜單頁面應用的客戶端MVW框架(Model-View-Whatever)。它在應用測試和應用編寫方面都扮演重要角色,同時簡化了開發過程。

  Angular目前的版本為1.3,該版本穩定,並被谷歌(框架維護者)用於支援眾多應用(據估計,在谷歌有超過1600個應用執行於Angular1.2或1.3)。Angular 2.0正式宣佈與去年10月份的奈及利亞會議上,該版本不會是一個複雜的重大更新。

AngularJS 2.0會有哪些新特性?

  為什麼推出Angular 2.0?

  在進一步討論Angular 2.0(估計釋出日期為2015年底)之前,讓我們簡單的思考下新版本背後的哲學。Angular 2.0開發始於解決以下問題:

  • 移動:新的版本將專注於移動應用的開發。依據是它更容易處理桌面方面的事情,一旦挑戰涉及到移動(效能、載入時間),注重這方面會使問題得到解決。
  • 模組化:各個模組將從Angular的核心中移除,從而獲得更好的效能。這意味著你可以選擇你需要的零件。
  • 現代化:Angular 2.0將把ES6和“常青”現代瀏覽器(自動更新到最新版本)作為目標。這意味著開發者可以專注於業務領域相關的程式碼。

  有哪些爭議?

  在奈及利亞會議上並沒有提及遷移到2.0版本的途徑。同時也指出跳轉到2.0版本將會打破原有的1.3版本應用,不會有任何的向後相容性。自從那時開始開發者社群一直充斥著不確定性和猜測,一些開發者也開始質疑是否值得開始一個新的Angular 1.3專案。

  有哪些改變?

  AtScript

  AtScript是ES6的一個父集,被用於開發Angular 2.0。它是由Traceur編譯器(連同ES6)處理來生成ES5程式碼並用TypeScript型別語法來生成執行時間的斷言,以此來代替編譯時的檢查。不過AtScript並不是強制的,你仍然能夠使用純JavaScript/ES5程式碼代替AtScript來編寫Angular應用。

  改善依賴入駐(DI)

  依賴注入(Dependency injection )模式的基本思想是客戶類Client不用自己來初始化它所依賴的成員變數IServer,使用一個獨立的物件建立IServer適當的實現類並將它賦值給Client的成員變數。它對模組開發與元件隔離特別有益。Angular 2.0將會解決Angular 1.X所存在的這個方面的問題。新增丟失的的特性,如child injectors和lifetime/scope控制。

  Annotations

  AtScript提供工具關聯後設資料和功能。這有助於構建提供必要資訊到DI庫的物件例項(檢查相關後設資料時呼叫一個函式或建立一個類的例項)。它還容易通過提供一個註解過載引數資料。

  Child Injectors

  一個child injector繼承了其父類的所有效能服務。根據要求,不同型別的物件可以被呼叫,並且自動覆蓋不同的範圍。

  例項範圍

  改進的DI庫將以例項範圍為特性,這在使用Child Injectors和自己的範圍識別符號時變得更加強大。

  模板和資料繫結

  在開發應用中,模板和資料繫結將齊頭並進。

  動態載入

  這是當前Angular版本所缺失的一個特性,不過將在Angular 2.0中出現。這將讓開發者可以在忙碌中新增新的指令或控制器。

  模板

  在Angular 2.0中,模板編譯過程將是非同步的。由於程式碼是基於ES6模組規格,該模組載入器將通過簡單的引用元件定義來載入依賴關係。

  指令

  在Angular 2.0中將會出現三種指令:

  • 元件指令——這些將通過JavaScript、HTML或一個可選的CSS樣式表的封裝邏輯建立可重複使用的元件。
  • 裝飾指令——這些指令將被用來裝飾元素(例如新增一個工具提示,或使用ng-show/ng-hide來顯示/隱藏元素)。
  • 模板指令——這些將把HTML改變為可重複使用的模板。模板的例項化以及嵌入到DOM可以完全由指令控制。這樣的例子包括ng-if和ng-repeat。

  路由方案

  初始的Angular路由是被設計用於處理一些簡單的情況。然而,隨著框架的發展,越來越多的功能被新增。在Angular 2.0中路由已經是可擴充套件的,它將包含以下基本功能:

  • 簡單的基於json路由配置;
  • 優於配置的可選協定;
  • 靜態的。引數化的路由模式;
  • URL解析器;
  • 支援查詢字串;
  • 使用推送狀態或Hashchange;
  • 導航模型(生成一個導航UI);
  • 文件標題更新;
  • 404路由處理;
  • 位置服務;
  • 歷史操作。

  現在,讓我們來看看那些讓Angular 2.0達到新高度的路由特性:

  子路由

  子路由將把應用的每個元件通過為它們提供各自路由的方式轉換成更小的應用,這將有助於封裝整個應用的特性集。

  螢幕啟用

  這將幫助開發者通過一組can*回撥更出色的控制導航的生命週期: 

  • canActivate——允許/阻止導航到新的控制器;
  • activate——響應成功到新的控制器的導航;
  • canDeactivate——允許/阻止導航遠離舊的控制器;
  • deactivate——響應成功遠離舊的控制器的導航;

  這些回撥將允許開發者返回Boolean值或一個命令(為了更低層次上的控制)。

  設計

  所有的這些邏輯都是使用流水線結構構建的,使得它非常容易將自己的步驟新增到流水線中或移除預設的東西。此外,它的非同步特性將允許開發者使用伺服器請求進行身份驗證或為控制器載入資料,不過這還在規劃中。

  日誌

  Angular 2.0將包含一個被稱為diary.js的日誌服務——一個非常有用的特性,測量你在應用中時間花費在哪裡。

  Scope

  $scope將從Angular 2.0中移除,取而代之的是ES6類。

  結論

  隨著釋出日期的臨近,圍繞Angular 2.0的興奮和聲音將會加劇。是否打破改變是一件好事?我們無法知道,不過反對者感到緊張是可以理解的,因為明顯缺乏遷移的計劃。Duang的一下就來了。不過其既然要來了,我們可以做的就是積極的迎接它。

  原文來自:sitepoint

相關文章