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























