根據官方說明,支持的平臺和最低版本以下:javascript
官方說明html
根據官方文檔,再也不經過使用 JavaScript 的 scrolling,應用在 iOS 和 Android 滑動時幀率能夠達到60FPS,這得益於2.0 final 版實現的 Virtual Scroll。java
經過列表建立10000個items,Ionic 一、Ionic 二、Native 的表現以下:web
和 Native 相比不是很流暢,區別明顯。typescript
和 Ionic 1 相比明顯流暢不少,接近原生。編程
Ionic 1 的文件組織結構:瀏覽器
Ionic 2 的文件組織結構:安全
經過這種默認的文件組織,一切很是整潔、 有條理,也更容易構建模塊化的代碼。angular2
經過 Ionic 2 CLI 便可自動生成須要的 pages、providers、tabs、pipes 而且會配置好須要的文件和必要的代碼,好比以下命令:app
ionic g page MyPage
便可生成以下組織的文件:
my-page.ts 內生成的代碼以下:
import {Component} from '@angular/core'; import {NavController} from 'ionic-angular'; @Component({ templateUrl: 'build/pages/home/home.html' }) export class HomePage { constructor(public navCtrl: NavController) { } }
當開發時遇到編譯錯誤,經過ionic serve
命令,詳細的錯誤信息會直接顯示在瀏覽器窗口。
經過ionic serve --lab
命令,可預覽應用在不一樣平臺的顯示效果:
Ionic 1 中跳轉是經過 URLS 來進行:
.config(function($stateProvider, $urlRouterProvider) { $stateProvider .state('intro', { url: '/', templateUrl: 'templates/intro.html', controller: 'IntroCtrl' }) .state('main', { url: '/main', templateUrl: 'templates/main.html', controller: 'MainCtrl' }); $urlRouterProvider.otherwise("/"); });
而後經過 activate 這些 states 來連接到這些 URLS,而 Ionic 2 不一樣於 Ionic 1 的這種 web 式的跳轉,而是經過 pages 的 pushed 和 popped,更 native 一些:
this.nav.push(MyPage);
Ionic 1:
![]({{photo.image}})
Ionic 2:
<img [src]="photo.image" />
Ionic 1:
<button ng-click="doSomething()">
Ionic 2:
<button (click)="doSomething()">
Ionic 2 建議使用 TypeScript 進行開發,這樣能夠享受到ES6帶來的簡潔語法和泛型等安全特性,以使構建大型項目更安全、穩定、易於調試。
Ionic 2 相比 Ionic 1,打包後的 app size 會大很多。
class Shape { constructor (id, x, y) { this.id = id this.move(x, y) } move (x, y) { this.x = x this.y = y } }
// lib/math.js export function sum (x, y) { return x + y } export var pi = 3.141593 // someApp.js import * as math from "lib/math" console.log("2PI = " + math.sum(math.pi, math.pi)) // otherApp.js import { sum, pi } from "lib/math" console.log("2PI = " + sum(pi, pi))
doSomething().then((response) => { console.log(response); });
for (let i = 0; i < a.length; i++) { let x = a[i]; }
someFunction((response) => { console.log(response); });
這樣就能避免不少this
的坑,好比:
var me = this; someFunction(function(response){ console.log(me.someVariable); });
TypeScript 是由微軟開發的一種基於 JavaScript 語法的語言,且已經支持了 ES6 、 ES7 語法。你能夠理解它爲 JavaScript 的超集,也能夠理解爲 JavaScript 的加強版。
它主要解決了如下問題:
JavaScript 代碼:
var name; //定義變量 function getName(type) { //定義函數 return ... } class Person { //ES7 下的類定義 name = ''; age = 18; getName() { ... } getAge() { } }
TypeScript 代碼:
var name: string; //定義變量 function getName(type: string):string { //定義函數 return ... } class Person { //類定義 private name: string = ''; private age: number = 18; public getName(): string { ... } public getAge(): number { } }
TypeScript 語言天生是帶有類型信息的,能夠完美識別出一個對象的類型,它自身有哪些屬性和方法,而後調用這些方法時,也能智能匹配出它的函數原型。寫起來更不易出錯。
TypeScript 和 JavaScript 能夠在一個工程裏面混合編程, TypeScript 的文件後綴是 .ts , JavaScript 的文件後綴是 .js 僅此而已。 ts 文件裏面依然用 import 或者 require 來引入一個 module 。
其餘幾個不錯的新增語法點: