下面把這些核心概念串一下。
與用戶直接交互的是模板,模板接收來自用戶的操作,通過數(shù)據(jù)綁定與對應(yīng)的組件類交互。組件類完成處理之后,更新模板視圖反饋給用戶。從這個圖上我們就能直觀地看出來,組件處于Angular2核心地位,指令和服務(wù)都是作為組件的擴展。
從圖中可以看出,中間大的部分可以看成是一個應(yīng)用,而用戶與應(yīng)用交互。Angular本身是一個客戶端框架,所以開發(fā)出來的是客戶端程序??蛻舳顺绦蛐枰c服務(wù)器交互,來從服務(wù)器獲取數(shù)據(jù)或者給服務(wù)器傳遞數(shù)據(jù)。
Angular程序至少需要包含一個模塊NgModule和一個組件component。
組件:是Angular應(yīng)用的基本構(gòu)建塊,你可以把一個組件理解為一段帶有業(yè)務(wù)邏輯和數(shù)據(jù)的Html。組件之間可以有父子關(guān)系,一個父組件可以包含多個子組件,子組價也可以有它自己的組件,組件可以去調(diào)用服務(wù)。
服務(wù):是用來封裝可重用的業(yè)務(wù)邏輯,如獲取商品信息的邏輯。在信息詳情頁,訂單詳情頁都需要商品信息。這時候可以把獲取商品信息的邏輯封裝在一個服務(wù)里,然后在不同的組件中調(diào)用。另外,組件可以調(diào)用服務(wù),服務(wù)也可以調(diào)用服務(wù)。
指令:允許你向Html元素添加自定義行為。如可以寫一個自動完成的指令。把這個指令寫在一個Input標簽上,Input標簽就會有一個自動完成的功能。Angular框架內(nèi)置了大量的指令來幫我們解決日常開發(fā)中常見的一些問題。
模塊:是用來將應(yīng)用中不同的部分組織成一個Angular框架可以理解的單元??梢园呀M件,指令,服務(wù),理解為積木中各種小塊。模塊可以理解外一個個小袋子。而那些可以組裝成汽車的積木小塊可以放在一個小袋子里,可以組成其它模型的小塊放在其它袋子里。
對Angular程序來說,圖中四個組件,還有兩個服務(wù),再加上某個指令,放在一起可以實現(xiàn)一個登陸注冊的功能,就可以把這些組件,服務(wù),指令放在一個登陸注冊的模塊里。如果別的項目也需要一個登陸注冊功能,就可以直接把這個模塊引入到另一個項目里。
總之,組件,服務(wù),指令是用來完成功能的,模塊是用來打包和分發(fā)這些功能的。