Ionic -- Ionic1與Ionic2的區別

現在公司使用ionic1的框架做項目,ionic2發佈之後想把項目遷到ionic2上來,所以研究一下,發現把項目從ionic1遷入到ionic2是有點。。。

Ionic專注於以標準的HTML、CSS、和JavaScript來構建的移動站點,並可以通過Cordova打包成移動App,只需要編寫一次代碼,就可以分別部署到Ios、Android等多種移動平臺上。

接下來我們介紹一下這兩個框架的區別:

1. Ionic2與一代相比有較大的變化,基於最新的Angular 2,使用TypeScript進行開發(如果沒有接觸過Angularjsionic1,完全不用擔心,直接從ionic2開始學習即可)

2.Ionic2藉助Angular2的革命性改進,與1.x版本相比具有以下優勢:

A.更快的性能


  

   http://blog.ionic.io/wp-content/uploads/2016/09/beta11-vs-beta12.gif(點擊打開鏈接)

B.更清晰的項目結構

 

C.更強大的CLI

     

D.更友好的頁面導航

 

E.更強大的模板語法

  

F.更高效的開發體驗

  

3.Ionic2基於Angular2進行構建,這是對於原始版本完全的重寫。一些語法和架構都有了變化,開發者需要注意。在Ionic1中使用的viewscontroller等,在Ionic2中都合併到了一塊。

4.請保證安裝的Nodenpm爲較新的版本。

5.在Ionic2中,每個組件、頁面都只專注於做一件事,它單獨有自己的一個目錄,有自己的類(Class)、模板文件(Template)和自己的樣式文件(在這裏我們提倡使用scss

home.ts

import {Component} from '@angular/core';
import {NavController} from 'ionic-angular';

@Component({
  templateUrl: 'build/pages/home/home.html'
})
export class HomePage {
  constructor(private navCtrl: NavController) {

  }
}

home.scss

.home {
    &.xxx{

    }

    .xxx{


    }
}

home.html

<ion-header>
  <ion-navbar>
    <ion-title>Home</ion-title>
  </ion-navbar>
</ion-header>

<ion-content padding class="home">
  <h2>Welcome to Ionic!</h2>
  <p>
    This starter project comes with simple tabs-based layout for apps
    that are going to primarily use a Tabbed UI.
  </p>
  <p>
    Take a look at the <code>app/</code> directory to add or change tabs,
    update any existing page or create new pages.
  </p>
</ion-content>

6.模板的語法結構

  ionic2的模板語法與Ionic1非常相似,但是看起來又有點古怪,其實Ionic2的模板語法更爲簡潔。我們來看一下對比。

ionic1:

<img ng-src="{{photo.image}}" />

    ionic2:

<img [src]="photo.image" />

我們看一下 事件調用:

    ionic1:

<button ng-click="doSomething()">

    ionic2:

<button (click)="doSomething()">

7.它僅僅是javascript而已

 ionic1和angular1都有一些特定的語法,但是追其根本只不過是javascript,也許你對EM6認識不是很深,但是你改變不了 它是ECMAscript標準的事實,也就是說作爲一個web前端開發的你,逃不了要學習這項新的語言,如果你感興趣你可可以試試Typescript, 如果你曾經做過後臺開發,我敢肯定你會愛上它,那麼你使用ionic2的同時,你是在熟悉未來web的新標準,它會讓你成爲一個更好的web前端開發者。 直到現在仍然有很大一部分前端開發人員不知道angular,不知道reactjs,甚至EM6和typescript,所以你應該感受到一絲優越感。

jsvascript:

this.someData = null;

var me = this;

doSomething(function(data){
    me.someData = data;
});

看到了麼?你問了使用this指針,不得不在函數外面作爲變量me的引用,但是你使用了EM6:

this.someData = null;

doSomething((data) => {
    this.someData = data;
})

7.編譯

  ionic從平臺上講是基於cordova的封裝( 不僅僅是它的CLI
),因此ionic工程也是一個標準的cordova工程,也就是說我們最終給跨平臺提供的是www目錄的資源文件,但是在ionic2中我們都是在 www的同級目錄的app目錄進行編碼,也是因爲我們使用EM6或Typescript寫的代碼瀏覽器並不能夠直接執行,如果你自己觀察ionic2的工 程目錄,你會發現Gulp.js的腳本多了幾個任務的定義,其實是幾個ionic的鉤子命令,如ionic
serve,ionic build之類的,其目的是在我們打包,或者瀏覽器模擬時的
命令執行之前,執行一些gulp任務,其中就是對typescript、scss的編譯,是不是感覺很方便,而且最終合併編譯到www/build/js目錄下,並且很難反編譯,也就是說你的app如果被人解包,他只能運行,但如果想拿到你的源碼是相當困難的。



介紹一個ionic2入門的文章:https://yanxiaodi.gitbooks.io/ionic2-guide/content/(點擊打開鏈接

ionic英文網址:http://ionicframework.com/docs/components/#overview(點擊打開鏈接








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章