? ? ? ? 初學前端跨平臺,水平尚淺诊沪,如有錯誤多多指教。
? ? ? ? 由于ionic包含在angular外層(或者可以理解為ionic為angular的一個擴展套件 ?ps:對于手機跨平臺開發(fā)來說,cordova也可以理解為ionic的一個套件或者angular的套件之一,用來橋接前端頁面和手機原生功能),因此ionic項目有著和angular同樣的工程目錄結構(如圖1):
? ? ? ?其中,index會作為app或頁面應用啟動加載時的入口第焰,一般會在其中對app的基本配置進行聲明(如各類基本JS庫的引入,相關app在不同平臺的配置信息等(如angular的基本庫等妨马,另外挺举,cordova的配置也需要在這里進行,且默認ionic項目是沒有配置cordova的[印象中烘跺,詳細參考cordova配置教程]湘纵,需要手動配置或通過cordova命令行命令生成項目))。main.ts在項目build時會被typescript轉(zhuǎn)譯成main.js滤淳,且默認聲明在index中梧喷,為啟動應用做準備。main.ts中聲明了angular的啟動模塊脖咐,也叫根模塊(即目錄中的app.module.ts)铺敌,由此開始是app的主要編程部分(使用typescript)。根模塊用來對app的主要組件及框架提供的已有功能進行聲明屁擅,引入偿凭,也可以做一部分邏輯處理,之后再行詳述派歌。app.component.ts弯囊,可以理解為根組件。下面詳細介紹app.component.ts胶果。
? ? ? ?在原文中有這樣一句闡述:“我們是這樣寫 Angular 應用的:用 Angular 擴展語法編寫 HTML模板匾嘱, 用組件類管理這些模板,用服務添加應用邏輯早抠, 用模塊打包發(fā)布組件與服務霎烙。”angular4(或ionic3)的主要想法是贝或,將項目應用拆分為各類組件(或服務等吼过,其實服務也可以叫理解為就是組件,只是缺少某些東西)咪奖。各類組件由.html和.scss或.css的文件與.ts文件一一對應且相互結合盗忱,形成具有一定功能的基本組件(大至頁面乌庶,小至bar甚至botton等,由自己決定)沼溜。再由這些組件組成較大的模板,再根據(jù)app的相應功能或需要聲明在根模塊中友多,由此組成一個可以使用的應用。在這些組件中闲昭,有的通過組件內(nèi)的.ts文件中的方法(或函數(shù))調(diào)用罐寨,有的則通過頁面跳轉(zhuǎn)功能調(diào)用⌒蚓兀總體上來說鸯绿,angular4的項目就是由分散內(nèi)聚的功能組件組合而成。由使用者的使用需求去啟動相應功能(懶加載)簸淀。
? ? ? ?通過ionic3的CLI命令快速建立的自帶tabs(簽頁)項目源文件可以更明確的看到這個思路瓶蝴。首先在app.module.ts中,聲明項目需要引入的各個組件租幕。如圖2:
? ? 其中舷手,例如myApp,AboutPage.. 等等,均是子組件或子模塊劲绪。App應用的功能均由這些組件或模塊組合實現(xiàn)男窟。因此需要在根模塊中聲明才能使用。
? ? ? 在app.component.ts中(圖3)贾富,@Component()指明了根組件對應的.html(展示)歉眷。constructor為MyApp實例化提供了基本的構造方法。platform.ready().then()方法返回了系統(tǒng)平臺加載的信息祷安。至此app的啟動加載和準備才算完成姥芥。同時由于Angular4會對組件類自動進行實例化(即自動讀取constructor并實例化),因此Myapp類也就隱藏的被實例化了。實例化的同時提供了一個變量rootPage汇鞭,并為其賦值TabsPage凉唐。在文件頭,import {TabsPage}form '../pages/tabs/tabs' 霍骄,將文件tabs引入了根組件中台囱。因此有必要觀察tabs。如圖4:
? ? ? Tabs中引入了三個類读整,分別是AboutPage,ContactPage 和 HomePage簿训。并在類裝飾器中聲明了模板目標,同時類tabspage中聲明了三個變量,一一對應至.html中的<ion-tab>標簽中米间。至此就講Homepage,Aboutpage等三個頁面和tabs綁定在了一起强品。[root]作為<ion-tab>的固定用法,可以理解為一個空白的tab容器(或向系統(tǒng)預先申請的一個空間屈糊,具體想了解可以去學習angular4有關屬性型指令的內(nèi)容)的榛,在需要加載時,才會具體加載指定的內(nèi)容逻锐,如三個tabTitle中的一個夫晌。
? ? ? 至此雕薪,可以理解,angular4(ionic3)應用的構成方式晓淀,即為將內(nèi)容獨立內(nèi)聚的組件一個個組合成需要的部分所袁,再由用戶需求去調(diào)用。