AngularJS是為了克服HTML在構(gòu)建應(yīng)用上的不足而設(shè)計(jì)的。HTML是一門很好的為靜態(tài)文本展示設(shè)計(jì)的聲明式語言,但要構(gòu)建WEB應(yīng)用的話它就顯得乏力了。所以我做了一些工作(你也可以覺得是小花招)來讓瀏覽器做我想要的事。 通常,我們是通過以下技術(shù)來解決靜態(tài)網(wǎng)頁(yè)技術(shù)在構(gòu)建動(dòng)態(tài)應(yīng)用上的不足: 類庫(kù) - 類庫(kù)是一些函數(shù)的集合,它能幫助你寫WEB應(yīng)用。起主導(dǎo)作用的是你的代碼,由你來決定何時(shí)使用類庫(kù)。類庫(kù)有:jQuery等 框架 - 框架是一種特殊的、已經(jīng)實(shí)現(xiàn)了的WEB應(yīng)用,你只需要對(duì)它填充具體的業(yè)務(wù)邏輯。這里框架是起主導(dǎo)作用的,由它來根據(jù)具體的應(yīng)用邏輯來調(diào)用你的代碼??蚣苡校簁nockout、sproutcore等。 AngularJS使用了不同的方法,它嘗試去補(bǔ)足HTML本身在構(gòu)建應(yīng)用方面的缺陷。AngularJS通過使用我們稱為標(biāo)識(shí)符(directives)的結(jié)構(gòu),讓瀏覽器能夠識(shí)別新的語法。例如: 使用雙大括號(hào){{}}語法進(jìn)行數(shù)據(jù)綁定; 使用DOM控制結(jié)構(gòu)來實(shí)現(xiàn)迭代或者隱藏DOM片段; 支持表單和表單的驗(yàn)證; 能將邏輯代碼關(guān)聯(lián)到相關(guān)的DOM元素上; 能將HTML分組成可重用的組件。端對(duì)端的解決方案 AngularJS試圖成為WEB應(yīng)用中的一種端對(duì)端的解決方案。這意味著它不只是你的WEB應(yīng)用中的一個(gè)小部分,而是一個(gè)完整的端對(duì)端的解決方案。這會(huì)讓AngularJS在構(gòu)建一個(gè)CRUD(增加Create、查詢Retrieve、更新Update、刪除Delete)的應(yīng)用時(shí)顯得很“固執(zhí)”(原文為 opinionated,意指沒有太多的其他方式)。但是,盡管它很“固執(zhí)”,它仍然能確保它的“固執(zhí)”只是在你構(gòu)建應(yīng)用的起點(diǎn),并且你仍能靈活變動(dòng)。AngularJS的一些出眾之處如下: 構(gòu)建一個(gè)CRUD應(yīng)用可能用到的全部?jī)?nèi)容包括:數(shù)據(jù)綁定、基本模板標(biāo)識(shí)符、表單驗(yàn)證、路由、深度鏈接、組件重用、依賴注入。 測(cè)試方面包括:?jiǎn)卧獪y(cè)試、端對(duì)端測(cè)試、模擬和自動(dòng)化測(cè)試框架。 具有目錄布局和測(cè)試腳本的種子應(yīng)用作為起點(diǎn)。AngularJS的可愛之處 AngularJS通過為開發(fā)者呈現(xiàn)一個(gè)更高層次的抽象來簡(jiǎn)化應(yīng)用的開發(fā)。如同其他的抽象技術(shù)一樣,這也會(huì)損失一部分靈活性。換句話說,并不是所有的應(yīng)用都適合用AngularJS來做。AngularJS主要考慮的是構(gòu)建CRUD應(yīng)用。幸運(yùn)的是,至少90%的WEB應(yīng)用都是CRUD應(yīng)用。但是要了解什么適合用AngularJS構(gòu)建,就得了解什么不適合用AngularJS構(gòu)建。 如游戲,圖形界面編輯器,這種DOM操作很頻繁也很復(fù)雜的應(yīng)用,和CRUD應(yīng)用就有很大的不同,它們不適合用AngularJS來構(gòu)建。像這種情況用一些更輕量、簡(jiǎn)單的技術(shù)如jQuery可能會(huì)更好。