大道至簡:Angular2只有一個核心概念
整體上來說,Angular2變得更加簡潔,最核心的概念只剩下一個,那就是組件Component,其它所有的一切都是圍繞著Component展開的。
從這一點來看,Angular2無疑是受到了React的強力影響,畢竟React的核心概念也只有一個,也是Component。
所以,在使用ng2的時候,大家只要會寫Component就行了,其它那些什么服務(wù)啊、路由啊、管道啊,都是些小工具而已。
接下來羅列一下Angular2與之前的1.x相比帶來的核心改變。
***點:Angular2刪掉了$scope的概念。
在ng1.x里面,$scope是一個相當強大又相當可怕的東西,一言不合就讓開發(fā)者自己$apply。ng2響應(yīng)社區(qū)的強烈吐槽,刪除(或者說隱藏)了$scope這個東西,開發(fā)者不再需要感知到它的存在,另外,由于ng2引入了zone.js,所以即使在各種回調(diào)函數(shù)中修改數(shù)據(jù)模型也不需要手動$apply()了。
這一點說明了群眾們吐槽的力量還是相當強大的!
第二點:刪掉了ng-controller指令。
Controller終于和Component合體了,小僧想說的是,人家Backbone早就這么做了,你們一開始只顧著自己挖坑,也不看看友軍的戰(zhàn)法,還好浪子回頭為時不晚。
第三點:大幅度演進了臟值檢測機制。
大家都知道,”雙向數(shù)據(jù)綁定“之所以能工作,都是因為底層有”臟值檢測“這么一個神奇的東西。而實際上ng1.x里面的臟值檢測機制的運行效率是非常差的,這就是為什么大家一直在吐槽綁定的對象不能太多、太深的原因。
那么,在ng2中,大幅度演進了這一機制,不僅引入了單向綁定,還引入了各種綁定策略,例如:只檢測一次、利用JIT動態(tài)生成臟值檢測代碼等等。毫無疑問,有了這些工具之后,數(shù)據(jù)綁定效率不再是問題。
第四點:嵌套路由問題。
大家都知道,在ng1.x里面有一個非常討厭的問題,官方的路由機制是不能嵌套的,這就導致大家在開發(fā)的過程中不得不依賴于第三方的ui-router庫。ng2中沒有這個問題了,因為ng2的路由是基于Component的,天然就支持嵌套。
第五點:依賴注入機制改造。
ng2里面的依賴注入簡直和Java中的注解一毛一樣,估計核心開發(fā)團隊里面混入了Java大神。如果你熟悉Spring那一套注解的用法,那么寫ng2的組件幾乎沒有學習成本。
第六點:框架整體上基于TypeScript開發(fā)。
這是***的一個變更,但是大家不用害怕,因為你只要記住我一句話就再也沒有顧慮了:TypeScript和ActionScript3一樣,不過是變態(tài)版的Java而已。