在過去的幾年時間里,Angular1.x顯然是非常成功的。但由於最初的架構設計和Web標准的快速發展,逐漸的顯現出它的滯后和不適應。這些問題包括性能瓶頸、滯后於極速發展的Web標准、移動化多平台應用,學習難度等。
所以Angular團隊最終決定以全新方式構建Angular2框架。Angular2框架現在已經進入RC6版本,很快它就將進入最終發布版。Angular2帶來了很多不錯的特性,它們包括跨平台、高性能、高效開發,擁抱web標准等等。
由於在Angular中引入了render層隔離設計,所以它也很容易實現跨平台的拓展。多平台拓展,理論上只需要實現目標平台的render層處理邏輯。目前在Angular2的生態圈中已有的跨平台框架如下:
Universal / Isomorphic: Universal(https://universal.angular.io/);
Progressive Web App: mobile-toolkit(https://mobile.angular.io/);
NativeScript: nativescript-angular(https://github.com/NativeScript/nativescript-angular);
React Native: react-native-renderer(https://github.com/angular/react-native-renderer);
Ionic2: Ionic2(http://ionic.io/2/);
Electron: angular-electron(https://github.com/angular/angular-electron/);
…....
Angular2架構的重新設計,使得其在性能方面也得到了巨大的改善:
組件樹和單向的@Input、@Output使得變更的影響變得可預知,不再需要Angular1那樣多次的digest直到穩定;以及結合
ChangeDetectionStrategy.OnPush
與immutablejs或者是Rxjs,Angular2的變更檢查算法復雜度降為了log(n)。相對於Angular1,得到了至少5倍的性能提升;Universal服務端渲染能夠更好提升首屏加載的性能,以及單頁面應用的SEO問題;
AOT技術引入,能夠讓組件處理的生成代碼提前到構建時期;再加上TypeScript的tree shaking等技術,能夠更大化的減小加載JavaScript文件大小和提升運行時性能;
Web端Web Worker的實現,能夠更好的解放我們的UI線程,得到更好的而用戶體驗,以及性能的提升;
不僅僅這些,Angular2還有很多的優秀特性。如:基於TypeScript的靜態類型檢查、擁抱web標准(Shadow dom,fetch API)等等。
總之,Angular2是一門值得我們學習的優秀前端框架。隨着Angular2進入了RC6版本,意味正式發布版將不遠矣。開始學習Angular2的時機已經到了。
同時筆者也開源了自己的rebirth項目供大家學習。它是一個利用Angular2開發的博客系統前端部分。它涉及到的Angular2知識點非常的全面,包括:組件化,自定義directive,路由,HTTP交互,Template drive form和Reactive form,異步路由,jwt token認證,資源權限控制,動態加載component,jQuery插件集成等常用知識點。
同時rebirth項目也集成了很多前端優秀的技術實踐:
Angular2 + rxjs
bootstrap-sass
codemirror + markdownit(online markdown文檔編輯器)
webpack2 + DashboardPlugin(代碼打包)
TypeScript2 + @types
stubby(數據mock框架)
tslint + codelyzer(ts代碼和Angular2組件靜態檢查)
angular2-template-loader(Angular2 component的html、css打包)
karma + phantomjs(TDD開發)
sass + postcss(css樣式組織)
typedoc(ts文檔)
fontgen-loader(icon font)
.......
在這里為大家放上幾張rebirth效果圖,供大家預覽:
移動端樣式:
PC端樣式:
希望大家能喜歡。有任何的問題可以在筆者的github提issue,筆者會在空閑時間為大家解答。
rebirth 項目地址: https://github.com/greengerong/rebirth