理解Ionic 2之import
在Ionic 1中最重要的概念是模組化,由於Angular 1實現的Ionic 1理所當然地繼承了模組化的概念。所以我們通過Ionic 1可以非常優雅地按照模組化的理念構建我們的工程,使得維護、重構、增刪功能節點、理解工程不再困難晦澀。當然,Ionic 2作為Ionic 1的升級版本,在模組化的實現上要更加簡潔、更加強大。本文通過ES6的關鍵字import來接觸Ionic 2/Angular 2的模組化。
注:本文可能涉及到ES6或TypeScript的相關知識。
模組化
JavaScript中模組化的概念由來已久,不過一直沒有作為JavaScript的內建功能而存在,基本都是通過庫的形式才能使用。而ES6的出現打破了這個局面,當然TypeScript作為升級版本當然也支援模組化。而使用Ionic 2開發應用時需要使用ES6或TypeScript,這就為Ionic 2的模組化之路奠定了基礎。
import語法
import是ES6中的關鍵字,使用它可以引入其他模組,其基本語法如下:
import {SomeClass} from 'path/to/SomeClass';
其中SomeClass是其他模組的類名,而’path/to/SomeClass’其實表示的是’path/to/SomeClass.js’或’path/to/SomeClass.ts’(使用TypeScript時),字尾名可以省略,在SomeClass.js/SomeClass.ts檔案中匯出了一個名為SomeClass的類。注意,匯出的類名不要求和類所在檔案的檔名相同。
案例分析
如果我們的工程結構如下:
src/ app/ app.ts app.html components/ dropdown/ dropdown.ts dropdown.html ... ...
現在我們如果想要在app.ts中使用我們的dropdwon元件應該這樣做:
// app.ts
// 獲取dropdown.ts裡面匯出的類
import {DropDownComponent} from '../components/dropdown/dropdown';
// 根據dropdown元件的實現方式合理使用
注意,匯入時的路徑相對於當前檔案所在的資料夾。
import之類別名
在實際開發中,開發者都有自己定義變數名、檔名的習慣,而有時為了程式碼的可維護性不得不將變數名、檔名等設定為有意義的值,達到所見即所得的目的。如此一來,檔名或變數名可能就會比較長,當然專案上線前肯定會有壓縮的過程,故不必在意對檔案大小的影響。不過在編碼時長變數名總歸不太方便,就像上例中的DropDownComponent使用起來就很不方便。還有一種情形,團隊開發中總有那麼幾個“黑洞”,不按照規範定義變數名,當別人引入TA的模組時可能不知道是什麼意思。為了解決這些問題,import
import {DropDownComponent as DropDownComp} from '../components/dropdown/dropdown'; // 此後可使用DropDownComp替代DropDownComponent
import {Bala as LoginService} from '../providers/bala/Bala'; // 此後可使用LoginService替代Bala,從而不會使開發者困惑
import之匯入多個類
從一個檔案中匯入多個類很簡單,只需要將類名用逗號隔開即可:
import {Login, LogOut, Register} from './userService';
如果需要匯入一個檔案中全部的類時,可以使用萬用字元*來表示:
import * from './userService';
import的前提 – export
上面我們只講述瞭如何使用import,可實際上我們並不能隨便將其他檔案中定義的類引入到我們當前的檔案中,能夠引入的必須是他人允許我們引入的,就像即使商家生產了蛋糕,如果不放在櫥窗裡,我們也完全不知道蛋糕的存在。而export的功能就是將“蛋糕”放在櫥窗裡:
// dropdown.ts
export class DropDownComponent {
// DropDownComponent的具體實現
}
export和import的延伸
其實export和import的作用並不像上文描述地那麼單一,他們不僅僅可以對類起作用,變數、方法、類等等等等都可以被它們操作,只是要注意它們之間的關係:import是因export而生的。
相關推薦
理解Ionic 2之import
在Ionic 1中最重要的概念是模組化,由於Angular 1實現的Ionic 1理所當然地繼承了模組化的概念。所以我們通過Ionic 1可以非常優雅地按照模組化的理念構建我們的工程,使得維護、重構、增刪功能節點、理解工程不再困難晦澀。當然,Ionic 2作為I
Ionic 2之node-sass問題解決辦法
tro https load -a href ech lease 問題 node node 重置Ionic項目: npm cache clean 在安裝Ionic2的git-hub項目:https://github.com/driftyco/ionic-con
深入理解Aspnet Core之Identity(2)
我會 tle lstat easyn OS app esc BE label 主題: 我將繼續介紹Identity的賬戶簡單管理,即是增刪改查。我會只介紹增加和刪除,修改功能代碼我會上傳到我的github上, 創建用戶: 1.我在Model文件夾創建一個 Cre
【學習筆記】 唐大仕—Java程式設計 第5講 深入理解Java語言之5.2 多型及虛方法呼叫
/** * 多型及虛方法呼叫 * @author cnRicky * @date 2018.11.7 */ 多型 多型(Polymorphism)是指一個程式中相同的名字表示不同的含義的情況 多型有兩種情形 編譯時多型: *過載(Overload)(多個同名的不同方法) *如 p.sayH
Angular 2/Ionic 2 @input和@output理解
先說說如何區分子元件、父元件。比如說我有一個元件A,他的選擇器是cmpA,然後B元件裡的html檔案裡用到了cmpA,那麼A元件就是子元件,B元件就是父元件。 做個比方,然後奉上程式碼 比如: <talk-cmp [talk]="someExp" (rate)=
CNN學習之旅[2]之第一次加副標題的BP演算法理解
在訓練神經網路的演算法中,BP演算法可以說是經典中的經典。 這裡所有的啟用函式都用Sigmoid,該函式有一個性質 f′(x)=f(x)(1−f(x)) 這個性質等下會用到。 yˆ表示訓練樣例的標籤。 E表示損失,E=12∑(yˆ−y)2 從最基礎情
python之import子目錄文件
人的 arch 問題: admin 創建 pro 最簡 pack erro 問題: 在pre_tab.py文件下: print("AA") from test.te import login1 login1() from test.te impo
深入理解Spring AOP之二代理對象生成
gets code 網上 none work class als post 產生 深入理解Spring AOP之二代理對象生成 spring代理對象 上一篇博客中講到了Spring的一些基本概念和初步講了實現方
cocos2d-x 3.2 之 2048 —— 第五篇
能夠 urn onf 平臺 restart getch ring article dia ***************************************轉載請註明出處:http://blog.csdn.net/lttree****************
帶你重拾JavaScript(2)之console的你所不知道的功能
斷言 adding devel bcf dev ces com 字符 bom JavaScript最常用的調試工具就是console.info()了。console是瀏覽器中window對象的屬性之一,由瀏覽器對象模型(BOM)提供,作用是訪問瀏覽器控制臺,你可以通過
CSS深入理解學習筆記之padding
style left 使用 支持 背景色 cnblogs check chrom 所有 1、padding與容器尺寸之間的關系 對於block水平元素:①padding值暴走,一定會影響尺寸;②width非auto,padding影響尺寸;③width為auto或box
CSS深入理解學習筆記之relative
需要 定位 層疊 left 避免 str 作用 屬性 存在 1、relative和absolute的相煎關系 限制作用:①限制left/top/right/bottom定位;②限制z-index層級;③限制在overflow下的囂張氣焰。 relative和fixe
深入理解Tomcat系列之五:Context容器和Wrapper容器
ssa stream servlet實例 可用 igel sse ould rip alt 前言 Context容器是一個Web項目的代表,主要管理Servlet實例,在Tomcat中Servlet實例是以Wrapper出現的。如今問題是怎樣才幹通過C
深入理解計算機系統之虛擬存儲器
fragment 策略 動態鏈接 字段 索引 ~~ cti 錯誤 個數 http://blog.csdn.net/al_xin/article/details/38590931 進程提供給應用程序的關鍵抽象: 一個獨立的邏輯控制流,它提供一個假象,好像我們的程序獨占地
《深入理解ES6》之解構
nbsp span 對象 code true 上下文 div 嵌套對象 賦值 結構是一種打破數據解構,將其拆分為更小部分的過程。 對象解構 對象字面量的語法形式是在一個賦值操作符左邊放置一個對象字面量。 let node={ type:"indefi
C語言復習2之位操作
位操作位操作 位操作是程序設計中對位模式按位或二進制數的一元和二元操作. 在許多古老的微處理器上, 位運算比加減運算略快, 通常位運算比乘除法運算要快很多. 在現代架構中, 情況並非如此:位運算的運算速度通常與加法運算相同(仍然快於乘法運算)。 位運算符 取反(~)是一元運算符, 對一個
QT中的線程與事件循環理解(2)
註釋 由於 做什麽 hid post 適用於 tsig call 循環 1. Qt多線程與Qobject的關系 每一個 Qt 應用程序至少有一個事件循環,就是調用了QCoreApplication::exec()的那個事件循環。不過,QThread也可以開啟事件循環
ArcGIS 10.2之 地圖服務的發布、使用
ons 圖層 oot scrip rdquo tle access url 發布服務 2、發布地圖服務 2.1 地圖服務器的建立 打開ArcCatalog,在左側的GIS Servers下,雙擊Add ArcGIS Server, 彈出添加界面,選擇,Admini
Servlet編程專題2之獲取ServletConfig對象
servletconfig接口說明 定義私有servletconfig成員變量 servletconfig接口方法介紹 enumeration接口介紹 <context-param>標簽 servletcontext接口 1、javax.servlet.ServletCon
JSP編程專題2之JSP核心三(自定義EL函數和標簽)
自定義el函數 jstl中的el函數 自定義el標簽 自定義帶屬性的el標簽 自定義el遍歷標簽 1、自定義EL函數:a、自定義類,類中的方法使用static修飾符修飾:b、該類以及函數,需要在一個擴展名為.tld(tld,tag library definition,標簽庫定義)的XML