AngularJS和jquery?
前面很多人也說(shuō)了,jquery是一個(gè)類庫(kù),是很多方法和函數(shù)的集合,而angular是一個(gè)框架,一個(gè)完整的前端項(xiàng)目開發(fā)的解決方案,它包括了視圖、數(shù)據(jù)操作等一系列。
用一個(gè)簡(jiǎn)單的比喻來(lái)說(shuō)明,開發(fā)一個(gè)項(xiàng)目就如造一把椅子,jquery就如同工具箱,里面有扳手,有錘子,釘子,電鉆等,它提供了很多更快造椅子的工具,而jquery的一些插件就像已經(jīng)做好的椅子面或者椅子腿;而angular就如一個(gè)3d打印機(jī)或者一個(gè)加工廠,你提供原材料,它輸出凳子,具體里面的實(shí)現(xiàn)方式,你無(wú)需關(guān)心。
在公司,我以前一直對(duì)新人都說(shuō),在使用angular時(shí),一定要拋棄jquery的思維。他們?cè)陂_發(fā)模式中有什么區(qū)別?jquery主要操作dom,是基于界面視圖驅(qū)動(dòng)的,所以在開發(fā)時(shí)候,是根據(jù)界面元素去賦值或者獲取數(shù)據(jù),動(dòng)態(tài)添加各種操作。而angular是數(shù)據(jù)驅(qū)動(dòng)的,有數(shù)據(jù),才有相應(yīng)的界面和視圖,你不需要關(guān)心數(shù)據(jù)的存取。
有很多人剛開始接觸angular時(shí),很難適應(yīng)這種方式,會(huì)發(fā)現(xiàn)在代碼中,尤其在需要數(shù)據(jù)的時(shí)候,還是有很多獲取元素,然后取它的value的操作。很多只是套了angular的架子,里面操作仍然使用jquery的用法。
但是也不是說(shuō)angular就完全由于jquery,這個(gè)得看使用場(chǎng)景和項(xiàng)目,如果對(duì)于單頁(yè)面應(yīng)用,就可以使用angular,它提供了一整套的方案,如路由,模塊化,服務(wù)等等。但是如果是多頁(yè)面項(xiàng)目,頁(yè)面之間關(guān)聯(lián)性很低,而且每個(gè)頁(yè)面功能比較單一,就可以使用jquery。
而且由于angular關(guān)注的是數(shù)據(jù),jquery關(guān)注的是界面dom,所以在做一些交互性很強(qiáng)的項(xiàng)目時(shí),jquery就更具有優(yōu)勢(shì)。比如你需要做一個(gè)官網(wǎng),里面只有很少的數(shù)據(jù)相關(guān)的操作,更多的是界面操作,此時(shí),jquery就更優(yōu)于angular;如果你是做一個(gè)后臺(tái)管理系統(tǒng),這種更多的是關(guān)注數(shù)據(jù)的正確性,而交互性更低,此時(shí),angular是更好的選擇。
另外,從學(xué)習(xí)成本來(lái)說(shuō),jquery更容易上手,所以很適合新人,angular學(xué)習(xí)坡度很大,更適合后續(xù)技能提升。