剛接觸angular的時候覺得它的模組化讓人非常不適應,並且使用typescript編寫後更是提公升了一些學習曲線,在感覺高大上的同時一頭霧水摸不清。仔細學習和研究了之後發現要使用好angular,對應用的架構要求具有高度組織性和層次性,但初學者非常容易在邏輯和檔案層面出現組織混亂。為了理清這種混淆,首先得明確ngmodule的概念。
angular賴以實現模組化開發和構建應用的方式就是定義了自身框架的模組化系統ngmodule。對模組化如此強調的原因有開發者意識層面的原因,也有實踐層面的原因,在angular中尤其關鍵,邏輯層面的功能組織都是圍繞模組來展開的。ngmodule的含義有廣狹之分,廣義的概念就是指代angular框架中的模組體系,狹義的概念是angular框架中最基礎的構建單元,即angular應用是由乙個個ngmodule組成的,它具有**實體。
作用ngmodule最主要的用途就是在邏輯層面上組織**,它也體現在檔案組織上。
**組織:除了在邏輯層面上進行組織,檔案目錄中也能體現這種模組化的**組織方式,乙個模組可以體現為乙個目錄,通過新增和移除目錄來實現這部分**的引入和刪除,做整體化的模組增減。資料夾中包含了模組檔案、入口元件和路由檔案,然後再通過子層的元件資料夾去實現具體的檢視或其他功能。乙個檔案組織非常到位的例項是ngx-admin,具體的檔案元件方式也要根據應用的複雜程度來調整。另外官方已經推薦了比較好的實踐正規化,這篇文章中最後整理出的體系圖可以為開發者提供乙個最佳實踐的示意圖。
內容服務:與檢視無關並可跨元件共享的功能模組。
ngmodule與es module
es module是語言語法層面上的模組體系,ngmodule是angular邏輯框架層面上的模組體系,這兩個模組系統的層面不同,是無衝突的。簡而言之,es module的使用以檔案為單位,在其他框架構建的應用中與ngmodule毫無關聯。
在angular應用中,模組的實現依賴於這兩個模組系統的結合,是相輔相成的。由於ngmodule是框架自身以邏輯實現的,與檔案的繫結並無嚴格關係,模組匯入這種語法層面的事情還是得需要es module來處理,所以通過分析,可以很顯然得出結論,es module處理檔案依賴關係,ngmodule處理應用邏輯依賴關係。
angular架構中使用js特性最突出的一點就是類,所有邏輯功能單元都被宣告為類,模組、元件、服務、指令、管道等都是作為類來匯出,而這些類本身是沒有辦法區分彼此,難道都只能通過口頭約定麼?
另乙個特性裝飾器無疑為這個問題提供了乙個近乎完美的解決方案,裝飾器這個概念的引入得益於其他高階語言,而且這個方案的應用早就很成熟了,python裡就屢見不鮮。之前在學習es6特性的時候一直覺得此特性只可遠觀,通過學習angular的一番實踐,終於知道它是多麼強大的開發助攻了。
在angular所有的構建單元宣告前都要包裝一層裝飾器,元資料作為乙個物件傳入裝飾器中用來在內部邏輯中將類和宣告的另一些構建塊(如模板、樣式)和構建單元建立關聯,同時明確這個類的身份。這樣在構建單元相互引用依賴時,就能區別引入的構建單元的型別,同時會制約它們的行為。
裝飾器是angular架構中高層的抽象機制它區別了angular中宣告類的類別,ngmodule是邏輯層面的組織結構,它與裝飾器一起構築了整個angular應用架構的基石。
Angular學習筆記 Angular生命週期
生命週期函式通俗的講就是元件建立 元件更新 元件銷毀的時候會觸發的一系列的方法。當 angular 使用建構函式新建乙個元件或指令後,就會按下面的順序在特定時刻呼叫這些生命週期鉤子方法。當 angular 使用建構函式新建乙個元件或指令後,就會按下面的順序在特定時刻呼叫這些生命週期鉤子方法 鉤子用途...
angular基礎 指令
指令 directive 可以理解為沒有模版的元件,它需要寄宿在乙個元素上 宿主 host 1.hostbinding 繫結宿主的屬性或樣式 import from angular core directive export class griditemdirective 2.hostlistene...
NLP 基礎 應用研究方向簡介
nlp 包含基礎研究 應用研究兩個方面,其中,基礎研究包括資料相關以及分析相關,應用研究包括nlp本領域以及相關領域研究。1 1 資料 基礎 相關 資料預處理 ai頂會 ngram語言模型 srilm python my nlp toollet 自然語言處理簡介及主要研究方向 國內關於自然語言處理的...