AngularJS 1.3.0 開發(fā)者指南 -- 介紹

Angular是什么 ?

AngularJS是一款針對動態(tài)web應(yīng)用的結(jié)構(gòu)框架. 它可以讓像使用模板語言使用HTML, 并且可以擴展HTML的語法來明確簡潔的表示應(yīng)用組件. Angular的數(shù)據(jù)綁定機制和依賴注入機制排除了許多原本你不得不寫的代碼. 它作用于瀏覽端, 使得它成為任何服務(wù)端技術(shù)的良好伙伴.

Angular是為了彌補HTML在構(gòu)建應(yīng)用上的不足而設(shè)計的. 對于靜態(tài)文檔來說, HTML是很不錯的聲明式語言, 但是要構(gòu)建web應(yīng)用, 它卻有些乏力. 所以我不得不做一些工作來讓瀏覽器做我想要的事.

通常, 我們通過以下方式解決動態(tài)應(yīng)用與靜態(tài)網(wǎng)頁之前的不匹配:

--- 一個函數(shù)集合, 我們用它來編寫我們的web應(yīng)用. 我們自己編碼作為主體, 然后我們在合適的時機調(diào)用庫, 例如jQuery.

框架 --- web應(yīng)用的一種特定實現(xiàn), 我們可以在它上面編碼實現(xiàn)具體的邏輯. 在這里, 框架起主導(dǎo)作用, 它可以在應(yīng)用的具體邏輯中調(diào)用你的代碼, 例如: durandal, ember等.

Angular采用了另一種方式. 它試圖通過創(chuàng)建新的HTML結(jié)構(gòu)來彌補HMTL在構(gòu)建應(yīng)用上的不足. Angular通過我們稱之為指令的結(jié)構(gòu), 使瀏覽器可以解析新的語法. 包括:

通過{{ }}通過數(shù)據(jù)綁定

通過DOM控制結(jié)構(gòu)實現(xiàn)迭代或隱藏DOM片段

支持表單和表單驗證

能將代碼關(guān)聯(lián)到DOM元素上

將HTML組成為可重用的組件

完整的客戶端解決方案

在構(gòu)建Web應(yīng)用程序客戶端的總體工程中, Angular不在只是其中的一小部分. 它可以處理你曾經(jīng)手寫的所有DOM和AJAX粘合代碼, 并且把它們放到一個定義好的結(jié)構(gòu)中. 這使得Angular在構(gòu)建CRUD應(yīng)用時有些"固執(zhí)", 但是, 它也試圖確保它的"固執(zhí)"只是你簡單改變的一個開始. Angular提供了以下可靈活變動的功能:

構(gòu)建一個CRUD應(yīng)用所需要的一切包括: data-binding(數(shù)據(jù)綁定機制), basic templating directives(基礎(chǔ)模板指令), form validation(表單驗證), routing(路由), deep-linking(深度鏈接), reusable components(可重用組件), dependency injection(依賴注入).

測試方面: unit-testing(單元測試), end-to-end testing(端到端測試), mocks, test harnesses(模擬和測試工具).

具體目錄布局和測試腳本的種子應(yīng)用作為起點.

Angular的可愛之處

對開發(fā)人員來說, Angular通過提供更高層次的抽象來簡化應(yīng)用程序的開發(fā). 像其他抽象一樣, 這帶來了靈活性的成本. 換句話說, 不是每個應(yīng)用都適合使用Angular. Angular主要是考慮用來構(gòu)建CRUD應(yīng)用. 幸運的是, 多數(shù)web應(yīng)用都是CRUD應(yīng)用. 為了弄懂Angular擅長什么, 我們就得先弄清楚什么樣的應(yīng)用不適合使用Angular.

動畫和GUI編輯器都是具有密集和復(fù)雜DOM操作的應(yīng)用. 這種應(yīng)用與CRUD應(yīng)用是不同的, 它們不太適合使用Angular. 它們更適合使用低層次抽象的庫, 例如jQuery.

Angular之禪

Angular建立在這樣的信念之上: 在創(chuàng)建用界面和組裝軟件方法聲明式語言要優(yōu)于命令式語言, 而命令式語言更擅長表達業(yè)務(wù)邏輯.

從應(yīng)用邏輯中分離DOM操作, 這可以改善代碼的可測試性.

將測試與編碼同等對待, 測試的難度一定程度上取決于代碼的結(jié)構(gòu)化.

前后端(客戶端與服務(wù)端)分離, 前后端開發(fā)同步進行, 有利于前后端代碼的重用.

框架在整個構(gòu)建應(yīng)用的過程中指導(dǎo)開發(fā)者, 從UI設(shè)計到編寫業(yè)務(wù)邏輯, 到測試.

化整為零, 化繁為簡.

Argular會將你從以下苦海中解救出來:

注冊回調(diào)函數(shù):注冊回調(diào)函數(shù)會降低代碼的可讀性, 使代碼變得零散. 應(yīng)該移除像回調(diào)函數(shù)這樣的通用代碼. 這樣會大幅減少(因JavaScript的不足)你不得不寫的JavaScript代碼, 從而使你的應(yīng)用更加清晰.

編程實現(xiàn)HTML DOM操作:操作DOM是AJAX應(yīng)用的基礎(chǔ)內(nèi)容, 但是這往往是繁瑣并且易錯的. 通過聲明的方式, 描述UI是怎樣隨著應(yīng)用的狀態(tài)變化而發(fā)生改變的, 你將從低級的DOM操作中解脫出來. 大多數(shù)Angular應(yīng)用不需要通過編輯來實現(xiàn)DOM操作, 除非你這樣做, 當(dāng)然也是可以的.

在UI頁面中讀寫數(shù)據(jù):CRUD操作占據(jù)了大多數(shù)AJAX應(yīng)用的任務(wù). 從服務(wù)端讀取到的數(shù)據(jù)流封裝成一個內(nèi)部對象傳送到HTML表單中, 用戶修改了表單內(nèi)容后, 將對表單進行驗證, 顯示驗證錯誤信息, 返回一個內(nèi)部模型發(fā)送回服務(wù)端, 這個過程產(chǎn)生了許多重復(fù)代碼. 而Angular消除了幾乎所有的重復(fù)代碼, 使得代碼只描述應(yīng)用的總體流程, 而不是實現(xiàn)細節(jié).

寫大量的初始化代碼:通過你需要編寫許多基礎(chǔ)性的代碼才能實現(xiàn)一個基本的AJAX的"Hello World"應(yīng)用. 使用Angular, 你將可以很容易的通過使用服務(wù)化來初始你的應(yīng)用, 而這些服務(wù)就會像Guice的依賴注入一樣自動注入到你的應(yīng)用當(dāng)中. 你就可以很快的開始開發(fā)你的功能. 并且你還可以全程控制自動化測試的初始化過程.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市念链,隨后出現(xiàn)的幾起案子潜索,更是在濱河造成了極大的恐慌抓半,老刑警劉巖嫌术,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件奔缠,死亡現(xiàn)場離奇詭異蜻底,居然都是意外死亡,警方通過查閱死者的電腦和手機拔稳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進店門葛峻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人巴比,你說我怎么就攤上這事术奖。” “怎么了轻绞?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵腰耙,是天一觀的道長。 經(jīng)常有香客問我铲球,道長,這世上最難降的妖魔是什么晰赞? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任稼病,我火速辦了婚禮选侨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘然走。我一直安慰自己援制,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布芍瑞。 她就那樣靜靜地躺著晨仑,像睡著了一般。 火紅的嫁衣襯著肌膚如雪拆檬。 梳的紋絲不亂的頭發(fā)上洪己,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天,我揣著相機與錄音竟贯,去河邊找鬼答捕。 笑死,一個胖子當(dāng)著我的面吹牛屑那,可吹牛的內(nèi)容都是我干的拱镐。 我是一名探鬼主播,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼持际,長吁一口氣:“原來是場噩夢啊……” “哼沃琅!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蜘欲,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤益眉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后芒填,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體呜叫,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年殿衰,在試婚紗的時候發(fā)現(xiàn)自己被綠了朱庆。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片泽论。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡漓库,死狀恐怖亦鳞,靈堂內(nèi)的尸體忽然破棺而出晨抡,到底是詐尸還是另有隱情项滑,我是刑警寧澤见剩,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布期揪,位于F島的核電站唐础,受9級特大地震影響悟衩,放射性物質(zhì)發(fā)生泄漏剧罩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一座泳、第九天 我趴在偏房一處隱蔽的房頂上張望惠昔。 院中可真熱鬧幕与,春花似錦、人聲如沸镇防。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽来氧。三九已至诫给,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間啦扬,已是汗流浹背中狂。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留考传,地道東北人吃型。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像僚楞,于是被迫代替她去往敵國和親勤晚。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內(nèi)容