概述
截止到2016.01.03,angularJS 2還處於beta版階段,所以ionic2也還是在 nightly版本。
注意:ionic2是基於angular2的,而angular2又是基於ES6的。所以不懂ES6的人得先去學習ES6,然後再學angualr2,最後學習ionic2。
安裝
像ionic1一樣,ionic2同樣能使用ionic CLI或者GUI工具快速的被創建,打包,和運行。
安裝環境要求
- node.js 4.2.x
- npm 3.x
nodejs下載地址:
- 官方下載(可能會很慢,更有可能會下載出錯,你懂得)
- 我的百度雲下載
nodejs安裝之後,查看npm版本可能是2.7.x,或者說你的npm版本號小於3.x的話,你需要升級npm,升級方法看這裏,升級到那個版本,版本號查看看這裏
安裝ionic2 CLI
用NPM安裝ionic@beta
npm install -g ionic@beta
上面的命令可能會很慢,而且容易出錯。在國內環境下要想快速安裝請用下面的指令,命令使用了npm淘寶鏡像,安裝應該進行的比較快。
npm install -g ionic@beta --registry=https://registry.npm.taobao.org
創建ionic 2項目
運行以下命令來創建一個ionic2項目
ionic start myFirstIonic2Project --v2
同樣的,上面命令可能很慢,下面的命令會快一些
ionic start myFirstIonic2Project --v2 /--registry=https://registry.npm.taobao.org1.4
運行項目
進到剛纔建立的myFirstIonic2Project 目錄
cd myFirstIonic2Project
運行項目
ionic serve
然後你就會看到瀏覽器裏自動彈出一個窗口,你的第一個 ionic 2 項目已經啓動起來了
項目模板
在ionic1中,官方提供的項目模板有三種:
- blank(默認不寫即爲blank)
- tabs
- sidemenus
ionic start myFirstIonic1Project [blank/tabs/sidemenus]
ionic2增加了一個新的模板:tutorial
創建一個新的ionic2APP
ionic start myFirstIonic2Project tutorial --v2
遷移
遷移的概念
ionic2構建在angular2之上,這是一個完整的可複用的原始框架。你所知道的所有部分都在那裏,但有新的語法和結構的變化,開發人員需要了解和學習對於angular2的一些變化,學習angular2
ionic2,大家不必感到很陌生(應該感覺很熟悉,這是廢話),因爲ionic1版本中的所有概念仍在ionic2版本中。雖然他們可能看起來有點不同。例如ionic1中的視圖和控制器,在ionic2中,他們已經合併爲一個實例。
列舉一個在ionic1中的示例:
.config(function($stateProvider){
$stateProvider
.state('main',{
url:'/',
templateUrl:'templates/main.html',
controller:'MainCtrl'
})
})
.controller('MainCtrl',function(){
})
上面的代碼能在ionic2中可以寫成這樣:
@Page({
templateUrl:'main/main.html'
})
export class MainCmp{
constructor(){
}
}
其他的變化,如navigation的變化,有很大的不同,但我們保證有很好的理由去改變。現在,您可以將組件視爲任意視圖,並且以任何方式導航到它們。這使得導航更加靈活,允許更多的本地風格的導航棧。
從 angular1遷移
而angular2要求應用程序必須更新的語法變化,開發商可以主動和確保他們的應用程序是可通過以下最佳實踐和John Papa’s Angular Style guide或 Todd Motto’s Angular Style guide。這兩個將爲你提供一個步驟,你可以採取準備遷移的代碼。
ControllerAs語法
ControllerAs的語法是angular1的一個特徵。他可以直接綁定數據到$scope,你能直接綁定到控制器的指令實例。這使得遷移一個angular1.xController到angualr2是非常簡單的。
index.html
<ion-content ng-controller="MainCtrl">
<ion-item>
{{data.text}}
</ion-item>
</ion-content>
app.js
.controller('MainCtrl',function($scope){
$scope.data = {
text:'Hello World'
}
})
轉變ControllerAs的語法,你只需要做一些小小的改變
index.html
<ion-content ng-controller="MainCtrl as main">
<ion-item>
{{main.data.text}}
</ion-item>
</ion-content>
app.js
.controller('MainCtrl',function(){
this.data = {
text:'Hello World'
}
})
TypeScript
TypeScript是你代碼中的JavaScript提供的ESClasses和類型註解的一個超集。現在,你可以採用TypeScript,很容易的編寫你的代碼就像編寫ES6 Classes一樣,輕鬆轉移到ionic2。最好的部分是,任何有效的JavaScript也是有效的TypeScript,所以你可以將你的代碼一個片段一個片段的轉換。在你編寫controller之前,你可以很容易地將它轉換成一個TypeScript 類就像這樣
app.js
.controller('MainCtrl',function(){
this.data = {
text:'Hello World'
}
})
app.ts
export class MainCtrl{
constructor(){
this.data = {
text:'Hello World'
}
}
}
項目架構
With Angular 1, it was a practice to keep all your JavaScript together and separate from your templates. Since Ionic 2 and Angular 2 will be moving to a component base setup, you can reorganize your project to help mentally enforce that concept. So a project whose directory looks like this…
|-www/
|
|–js/
|–|-app.js
|–|-HomeCtrl.js
|–|-DetailCtrl.js
|
|–templates/
|–|-Home.html
|–|-Detail.html
|
|-index.html
像下面這樣組織結構
|-www/
|
|–Home/
|–|-HomeCtrl.js
|–|-Home.html
|
|–Detail/
|–|-DetailCtrl.js
|–|-Detail.html
|
|-index.html
|-app.js
組織你的項目,這樣可以幫助你的思維模式,你的應用程序的視圖/狀態是一個組件,一個模板和控制器。