什么時候 AngularJS 會超越JQuery
當(dāng) DOM 操作是次要時
jQuery 主要關(guān)注于 DOM 掃描和操作。一個常例是通過用戶操作進(jìn)行 DOM 元素的添加和修改,例如將AJAX返回的結(jié)果通過預(yù)先處理的HTML添加到已存在的DIV中。但使用 AngularJS,開發(fā)的焦點在于數(shù)據(jù)展示。通過雙向數(shù)據(jù)綁定,數(shù)據(jù)的更新會自動完成而不需要刪除和重建 DOM。雖然 DOM 操作是不可能完全避免的,但較只使用 jQuery,使用 AngularJS 你只需處理較少的 DOM 操作。
當(dāng)注重效率時
雖然 AngularJS 學(xué)起來有點難,但它對于開發(fā)者來說具有較高的效率。AngularJS 的很多特性注重于提高開發(fā)者的產(chǎn)出。例如為支持單元測試的內(nèi)建擴(kuò)展支持。注重于測試的特性通過簡化單元測試,從而使開發(fā)者注重于生產(chǎn)更健壯可靠的代碼。另外,通過將DOM操作與程序邏輯解耦,開發(fā)者能夠?qū)W⒂?ldquo;為什么”而不是“如何做”。通常,這會導(dǎo)致短小但穩(wěn)定和易于調(diào)試的代碼。
在采用描述性接口的時候
使用jQuery常常遇到的問題是它采用的是命令式編程,說的再透徹點,它告訴計算機(jī)如何才能達(dá)到目標(biāo),這樣的處理過程產(chǎn)生的結(jié)果就是你想要的結(jié)果。不過,描述性編程則相反,它告訴計算機(jī)你想要的結(jié)果,讓計算機(jī)自己確定該如何實現(xiàn)。JavaScript 總的來說是采用命令式方法進(jìn)行設(shè)計的,而HTML-以及AngularJS給HTML所增加的指令-都是專門為描述性編程而設(shè)計的。如果你使用AngularJS進(jìn)行編程,那么你最終采用的描述性編程,它更符合HTML原來的設(shè)計意圖-即告訴計算機(jī)你想得到的顯示結(jié)果,然后由計算機(jī)處理具體的細(xì)節(jié)。如果采用了這種編程方式,那么完成具體任務(wù)所需代碼的行數(shù)就會大大的減少了,這樣的代碼可讀性更高,維護(hù)起來更容易。
結(jié)論
如上所述,AngularJS 和 jQuery 在許多方面都不具有可比性。這兩個框架設(shè)計的目標(biāo)不同,解決問題就不同。話雖這么說,開發(fā)人員開發(fā)某些數(shù)據(jù)顯示和維護(hù)方面的應(yīng)用而不是數(shù)據(jù)分析方面的應(yīng)用的產(chǎn)能得到了大幅提升,AngularJS 在這些領(lǐng)域都比 jQuery 好很多。最終要選擇哪個框架由你所在單位的能力和所采用工具的核心組件相關(guān)的許多因素決定的,不過,無論如何,AngularJS 都是提高互聯(lián)網(wǎng)應(yīng)用開發(fā)人員產(chǎn)能,減少維護(hù)費用的不二的選擇。