現在在用ng1.5.8做一個項目,ng的優點和特性我就不用多說了,ng1在陸續更新到1.5/1.6后就沒再推出新版本了,ng2已經面世測試很久了,如同很多系統和框架一樣,每個大的版本更新都會有新特性加入進來,雖然還沒有用ng2做過企業級項目,平時也了解了很多ng2的改進的地方,下面就來梳理一下ng1和ng2之間一些差異;
- Angular2不是從Angular1升級過來的,Angular2是重寫的,所以他們之間的差別比較大,不是你用過1就能直接上手2的,計划可以認為是一個新的框架;
- Angular2使用了javascript的超集‘Typescript’,所以angular1和angular2從設定之初就是不一樣的;
- Angular1.x在設計之初主要是針對pc端的,對移動端支持較少(當然也有其他一些衍生框架如ionic),而Angular2是設計包含移動端的;
- Angular 1的核心概念是$scope,但是angular2中沒有$scope,angular2使用zone.js來記錄監測變化;
- Angular 1 中的控制器在angular2中不再使用,也可以說控制器在angular2中被‘Component’組件所替代:
////Angular 1.x using Controller and $scope......... var myApp = angular .module("myModule", []) .controller("productController", function($scope) { var prods = { name: "Prod1", quantity: 1 }; $scope.products = prods; }); ///Angular 2 Components using TypeScript........ import { Component } from ‘angular2/core’; @Component({ selector: ‘prodsdata’, template: ` <h3>{{techncalDiary}}</h3> ` }) export class ProductComponent { prods = { name: ‘Prod1’, quantity: 1 }; }
- Angular 2中, 指令的結構、用法作了一些調整,比如1中的ng-repeat被*ngFor替代
///Angular 1.x structural directives:........ <ul> <li ng-repeat="item in items"> {{item.name}} </li> </ul> ///Angular 2 structural directives:............. <ul> <li *ngFor="#item of items"> {{item.name}} </li> </ul>
- Angular 2中, 自帶原始指令在使用的時候要加上哈希(#)前綴
<div *ngFor="#technicalDiary of technicalDiries">
- 雙向數據綁定: [(ngModel)]的寫法替換了ng-model
///Angular 1.x, two-way data binding using 'ng-model'.......... <input ng-model="technology.name"></input> /////In Angular 2,two-way data binding using '[(ngModel)]'.......... <input [(ngModel)]="http://technology.name"></input>
- Angular 2主要的性能優化改進是使用了分層依賴注入系統。 Angular 2實現了基於單向樹的變化檢測,這再次提高了性能;這些優化改進是的angular2的速度比angular1的速度提高很多;
- Angular 2的大小是20kb左右,相對於angular1體積減少很多,在移動端的應用中,流量方便更占優勢;
- 支持影子 DOM;
- 支持 Android 和 iOS 的原生移動渲染;
- 支持服務端渲染
總結:
很多人覺得從angular1轉向angular2的時候學習曲線陡峭,所以在進軍angular2的時候還是先做點預習功課比較好,也是因為改動較大,對angular2的設計思想、原生組件寫法和工作原理有一定的了解,學習使用的過程中也更好跨階。
盡管angular2還在應用測試階段,但是新版本相對於angular1有了長足的優化改進,相信它會越來越多的被應用到各個應用開發中,並且angular2只會load應用所需的組件(components),這也是個很好的改進,一些統計網站上的數據顯示angular的速度比angular1快五倍,不得不說這次angular2的改版升級是非常給力的;本篇列舉了一些本人針對angular2新特性的理解,很多point沒有寫出來(有些還不很了解熟悉),開發正式項目后或者了解更多新特性后再慢慢填補更新;