天天看點

Ionic2 src檔案夾分析

Ionic2 src檔案夾分析

在Ionic2中src檔案夾是我們主要的工作區域,我們看下這個檔案夾的結構:

  1. app
  2. assets
  3. pages
  4. theme

一共四個檔案夾。其中主要的兩個檔案夾就是

app

pages

app是ionic 應用的根目錄,pages則是子組建。

我們先看app下面的五個檔案。

app.scss

用于設定全局css樣式,一般我們都不用,是以沒啥好說的。

app.module.ts 我們稱為根子產品,除非你已經牛逼到可以寫超大型應用,一般情況隻有唯一一個根子產品,所有的子產品都會注入到這個子產品裡。我們先分析這裡面都有些什麼鬼?

Ionic2 src檔案夾分析

上面就是全部架構;

Ionic2 src檔案夾分析

我們首先在Angular2的核心庫中引入

NgModule

ErrorHandler

子產品用于,Angular2的正常工作和錯誤處理機制。

然後在Ionic2的核心庫中引入

IonicApp

,

IonicModule

,

IonicErrorHandler

三個子產品,用于IonicApp,子產品,錯誤處理機制。

Ionic2 src檔案夾分析

引入根元件

Ionic2 src檔案夾分析

引入子元件

Ionic2 src檔案夾分析

注意上圖,這是在ionic-native也就是ionic2中的原生庫(自帶)中引入status-bar和splash-screen服務,這個知識點會在其他文章中細說。

Ionic2 src檔案夾分析

在上面我們已經說了,這個檔案是一個根子產品,在上面我們也已經引入了

angular2

NgModule

機制.什麼意思?也就是所有引入的根子產品/子子產品/服務都得注入進來。否則,一切都都白忙活,這就如同一個插線闆。

declarations

entryComponents

數組内部一模一樣,把你的根元件和子元件(Component)都注入進來。

imports

告訴

IonicModule

這個Ionic根子產品你這個應用的根元件是哪個?這個案例的根元件就是

MyApp

.

bootstrap

是告訴你的Angular2哪個是你Ionic的根元件。這個案例中就IonicApp. 是以這個邏輯就是

MyApp < IonicModule < IonicApp < Angular2.

providers

用于服務注入,把我們剛才引入進來的那幾個服務包引入進來就好了。

Ionic2 src檔案夾分析

好了,到了這裡我們一個完整的根子產品就已經完成了,我們隻需把這個AppModule根子產品通過class暴露出去就好了。那麼問題來了,這是暴露給誰的?答案就是main.ts這個檔案。

Ionic2 src檔案夾分析

這個檔案隻有三行代碼,它引入了angular2中的

platformBrowserDynamic

這個子產品,告訴angular2

AppModule

是所有一切的核心。

到了這裡我們應該能弄清我們自己的應用同Ionic以及Angular2之間的關系了,我就回到我們這個應用本身。

無論是angular2還是Ionic2應用的根元件的名稱都是

app.component.ts

。下面就是這個檔案内部的代碼:

Ionic2 src檔案夾分析

還是一行行的分析:

Ionic2 src檔案夾分析

我們分别從angular2核心庫引入

components

子產品,ionic核心庫中引入

Platform

平台服務,以及從ionic原生庫中引入

狀态條

開場白服務

,我在這裡說下,這兩個服務都是IOS和android原生的功能,Ionic的服務是一種模仿原生應用。

Ionic2 src檔案夾分析

引入子元件

TabsPage

,其實就是導覽列元件,沒啥好說的。其他文章會細說。

Ionic2 src檔案夾分析

我們在

@Component

中聲明模闆是

app.html

,下面就是

app.html

Ionic2 src檔案夾分析

這裡,很多人估計就懵了,什麼鬼?為什麼一個根元件的模闆裡隻有一個

<ion-nav>

标簽?

[root]

又是什麼鬼?這其實都是ionic中的自帶api,在這裡暫時記住這就是一個導覽列的外殼,裡面包着

rootPage

這個值就好了。

Ionic2 src檔案夾分析

在這裡我們就可以将整個app的根元件打包出去了,

rootPage

這個值的類型可以是

any

,它就是我們上面引入的

TabsPage

這個子元件。這樣我們在TabsPage這個子元件中建立的導航功能就可以渲染到了根元件中,也就是無論什麼時候在這個應用中這個導航永遠存在。

constructor

函數是我們要講的一個重點,它類似于angular1中

controller

的回調函數,也就是說當MyApp這個根元件在被外部調用後,它所注入的服務項都會挨個運作。

platform.ready()

表示ionic全部加載完畢,平台已經就位。在then()函數的回調函數中,狀态條進入預設樣式狀态,而那個打開應用畫面就會隐藏。

好了,到這裡,有關于ionic2的src檔案夾中的檔案就全部講解完畢。

至于pages目錄裡的檔案和app檔案夾中的根元件基本一樣,可以自行了解。