ionic 2 是基於 Angular 2 之上重寫的全新框架。全部你已知的關於的 Angular 的部分仍然存在,可是也有一些做爲開發人員仍要了解的新的語法和結構性變化。html
在 ionic 2 中有不少已經很熟悉的東西。全部 ionic1的概念依然保持到了ionic 2 中,只是它們稍有不一樣。像在 ionic1中同樣你仍然擁有視圖和控制器,不過它們已經合併成了一個實例。vue
從ionic1 遷移node
ionic1 中看像是這樣:react
.config(function($stateProvider){ $stateProvider .state('main', { url: '/', templateUrl: 'templates/main.html', controller: 'MainCtrl' }) }) .controller('MainCtrl', function(){ })
ionic 2 則重寫成這樣:小程序
@Component({ templateUrl:'main/main.html'})
export class MainCmp {
constructor(){
}
}
還有許多其餘的變化,好比導航。如今,你能夠將爲所欲爲的使用組件而且以你想要的方式導航到它們。這使得導航更加的靈活,而且支持原生風格的導航堆棧。微信小程序
從Angular1 遷移微信
雖然 Angular 2 應用須要對其語法結構進行更新,可是對於開發人員來講,遷移並非問題。app
這裏爲你提供代碼遷移的準備步驟:框架
ControllerAs 語法ionic
ControllerAs
語法是 Angular 1 中的一項特性,取代了數據綁定到$scope
,你能夠直接將實例綁定到控制器。這能夠很容易的讓一個 Angular1 的控制器遷移爲一個 Angular2 的類。
傳統控制器:
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 的一個超集,提供了ES6類和代碼中的註釋類型。如今使用 TypeScript,你能夠編寫代碼做爲ES6類,這會讓轉移到 Ionic 2 變得很容易。並且最棒的是,任何有效的 JavaScript 的代碼依然也是有效的 TypeScript 代碼,這樣你就能夠按需轉換你的代碼塊。你以前的控制器很容易的經過 TypeScript 轉換成這樣:
app.js
.controller('MainCtrl', function(){
this.data ={
text: 'Hello World'
}
})
app.ts
export class MainCtrl{ constructor(){
this.data ={
text: 'Hello World' } } }
在 Angular 1 中,將 JavaScript 代碼從模版中分離出來並放在一塊兒是一個慣例。可是因爲 ionic 2 和 Angular 2 是基於組件概念的,你可能須要從新組織你的項目結構來與新概念保持一致。
因此你的原來的項目看起來是這樣的:
|-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
新的組織結構能夠有助你思惟的一致性,使你應用的每個視圖/狀態
和模版
還有控制器
成爲一個組件。
更多angular1/2/四、ionic1/2/三、react、vue、微信小程序、nodejs等技術文章、視頻教程和開源項目,請關注微信公衆號——全棧弄潮兒。