angular的架構(gòu):
Angular的中文網(wǎng)站上對于A有過一段這樣的話:“ 我們是這樣寫 Angular 應(yīng)用的:用 Angular 擴(kuò)展語法編寫 HTML模板,用組件類管理這些模板,用服務(wù)添加應(yīng)用邏輯,用模塊打包發(fā)布組件與服務(wù)。 ”(當(dāng)然此時的文檔已經(jīng)全面升級為2.0版本,具備1.5之前的知識似乎并不是那么必要)我們看看這里面有什么值得我們學(xué)習(xí)和記憶的:
其實他的整體似乎很清晰,我們要做的是利用A擴(kuò)展語法(指令)編寫位于示意圖上方的Template(模板),作為HTML的一部分,他可以很好的實現(xiàn)視圖的表達(dá),而這需要Directive(指令),如果你曾經(jīng)讀過A相關(guān)的早期書籍,指令這個鼎鼎大名的可以被用作創(chuàng)作包括元素,屬性,注釋等等的包括核心指令,自定義指令在內(nèi)的方法,你一定不會陌生,同時示意圖也指示了一點,就是新版本A對元數(shù)據(jù)對象有明確定義,這其中就包括Directive和Component(組件)。A最大的改動莫過于從1.x過渡到1.5版時,1.5增加了用于替代Control(控制器)的Component。繼續(xù)看示意圖,你會發(fā)現(xiàn)組件中需要添加依賴,即Dependency Injection(依賴注入),而這些依賴的來源多數(shù)是Service(服務(wù))。無數(shù)個(或者有限個)服務(wù)匯聚成一個完整的組件。我并不想在此解釋服務(wù)和注入,因為他們(目的)都是一回事,就是為了讓組件可以具備處理應(yīng)用邏輯的能力(各類服務(wù),“ 服務(wù)是一個廣義范疇,包括:值、函數(shù),或應(yīng)用所需的特性。 ”),如同那段紅色標(biāo)記清晰。既可以直接使用組件,在其內(nèi)部定義應(yīng)用邏輯,也可以將應(yīng)用邏輯拆分至服務(wù)。
以上就是A的簡單的架構(gòu)內(nèi)容,當(dāng)然關(guān)于Data Binding(數(shù)據(jù)綁定),需要關(guān)注和了解的是在組件定義的屬性(成員)如何表示在模板中表示出來,最簡單的方式就是通過插值表達(dá)式 (符號“ {{}} ”) 來綁定屬性名。當(dāng)你對數(shù)據(jù)事件驅(qū)動的架構(gòu)還不是很敏感的時候,我希望你可以看看小程序的文檔,頁面同樣是被數(shù)據(jù)驅(qū)動的(準(zhǔn)確說則是呈現(xiàn)由數(shù)據(jù)驅(qū)動組件產(chǎn)生的頁面),怎么解釋這句話呢。為了解放過度DOM的操作,將注意力集中在業(yè)務(wù)邏輯(數(shù)據(jù)層面)上,MVC的方式被引入到前端中,使得呈現(xiàn)視圖的DOM可以交給框架去完成(是否可以把這個當(dāng)作Model層和View層能夠被解耦的合理解釋呢)。當(dāng)然,對于Angular,把他解釋為MVVM才更加合適吧,響應(yīng)式編程和雙向數(shù)據(jù)綁定。MVVM的架構(gòu)示意圖:
新聞熱點
疑難解答