Ionic 2 程序主要经过Ionic命令行工具CLI
来建立和开发,并使用Cordova
来构建和部署为原生应用程序。也就是说咱们须要先安装一些工具来实现程序开发。javascript
要建立 Ionic 2 项目,你须要安装最新版本的 CLI
和 Cordova
。在此以前你须要安装最新版本的Node.js
。点这里 下载安装Node.js
,而后继续安装Ionic CLI
和Cordova
来进行应用程序开发:css
安装 Ionichtml
npm install -g ionic
安装 Cordovajava
npm install -g cordova
命令前面可能须要添加
sudo
提权来进行全局安装。node
安装完成后来建立你的第一个 Ionic 应用:android
ionic start cutePuppyPics --v2
cutePuppyPics
能够替换成你的应用程序名称。--v2
表示当前生成的是 Ionic 2 版本的应用,不添加则生成 Ionic 1 应用。ios
建立完成后cd
到你的程序目录中,执行ionic serve
来启动你的Ionic应用,并确保测试在浏览器中可以正常显示:apache
cd cutePuppyPics ionic serve
对于那些为iOS和Android构建原生应用程序(大多数人),每一个平台都有必定的功能和安装要求,才能充分利用Ionic和Cordova开发。npm
对于iOS开发人员,请查看Cordova iOS平台指南,并按照说明安装或升级Xcode,并注册开发人员账户,开始为iOS开发应用程序。flask
对于Android开发人员,请查看Cordova Android平台指南,并按照说明安装SDK或Android Studio,开始为Android开发应用程序。
确保完成以前的安装并测试启动成功。下面咱们将启动新的应用程序,添加页面,并在这些页面之间导航等过程。 让咱们开始吧!
用start
命令来建立一个新的Ionic 2应用。别忘了添加--v2
来指定这是一个 Ionic 2 的应用程序。再添加一个tutorial
参数,指定使用tutorial
模版建立该应用。这样一个基于TypeScript
的Ionic 2应用就被成功建立了。
ionic start MyIonic2Project tutorial --v2
在这个过程当中将会下载 Ionic 2 库包,安装所需的npm模块,并为应用配置好Cordova。若是在建立时不指定
tutorial
参数,ionic默认使用tabs
模版来建立应用。
如今你能够cd
到建立好的项目文件夹中,使用serve
命令在浏览器中预览你的应用。
cd MyIonic2Project/ ionic serve
若是成功启动,你将看到上面这样的欢迎界面。
让咱们来剖析一下Ionic 2应用,在咱们建立的文件夹中,咱们能够看到一个典型的Cordova项目结构。咱们能够在其中安装原生插件,并建立平台特定的项目文件。
src/index.html
是 Ionic 2 应用的主入口文件,其目的是设置脚本和CSS引导,而后开始运行咱们的应用程序。 咱们不会在这个文件中花费大量的时间。
为了让应用正常运做,Ionic 2 会在HTML中寻找<ion-app>
标记。 在这个例子中,咱们有:
<ion-app></ion-app>
而且在下方咱们还能看到这样的脚本引用:
<script src="cordova.js"></script> <script src="build/polyfills.js"></script> <script src="build/main.js"></script>
cordova.js
是Cordova应用的需求文件,咱们在开发过程当中这个文件将会提示404错误,这不须要担忧。Cordova将会在构建过程当中自动注入这个文件。
build/polyfills.js
是在构建过程当中自动生成的,咱们不须要过多关注。
build/main.js
是一个包含了Ionic, Angular和你的JS脚本的文件。
在app
文件夹中能找到咱们的预编译代码。这是Ionic 2应用程序的大部分工做起始的地方。当咱们运行ionic serve
时,app
中的代码将被编译成当前浏览器可以执行的javascript版本(当前是ES5)。也就是说咱们可使用TypeScript或更高级别的 ES6+ 进行开发,而在编译时会自动降级为浏览器可识别的版本。
app.component.ts
是应用的入口文件。
在文件中咱们可以看到这样的结构:
@Component({ templateUrl: 'app.html' }) export class MyApp { constructor( ) }
每一个应用程序都有一个根组件,用于控制应用程序的其他部分。这跟Ionic 1和Angular 1中的ng-app
很是类似。原先的启动配置被放倒了app.module.ts
文件中。
在这个组件中,咱们设置了模版文件app.html
,下面咱们来看一下这个文件。
app.html
里是咱们应用的主模版:
<ion-menu [content]="content"> <ion-header> <ion-toolbar> <ion-title>Pages</ion-title> </ion-toolbar> </ion-header> <ion-content> <ion-list> <button ion-item *ngFor="let p of pages" (click)="openPage(p)"> {{p.title}} </button> </ion-list> </ion-content> </ion-menu> <ion-nav [root]="rootPage" #content swipeBackEnabled="false"></ion-nav>
在这个模板中,咱们设置了一个ion-menu
做为侧面菜单,而后一个ion-nav
组件做为主要内容区域。ion-menu
菜单的[content]
属性绑定到了咱们ion-nav
的本地变量content
上。因此咱们知道哪里会发生动做变化。
接下来,咱们来看看如何建立更多页面并执行基本的导航。
如今咱们对Ionic 2应用的布局有一个基本的掌握,让咱们来了解一下在应用中建立和导航到页面的过程。
让咱们看一下app.html
页面的底部:
<ion-nav [root]="rootPage" #content swipeBackEnabled="false"></ion-nav>
注意[root]
属性绑定。 这本质上是设置了ion-nav组件的“root”页面。 当ion-nav加载时,变量rootPage
引用的组件将是根页面。
在app.component.ts
中,MyApp
组件在其构造函数中指定:
... import { HelloIonicPage } from '../pages/hello-ionic/hello-ionic'; ... export class MyApp { ... // make HelloIonicPage the root (or first) page rootPage: any = HelloIonicPage; constructor( public platform: Platform, public menu: MenuController ) { ... } ... }
咱们看到rootPage
设置成了HelloIonicPage
,因此HelloIonicPage
将是在nav控制器中加载的第一个页面。
接下来,让咱们看看咱们正在导入的HelloIonicPage
。在src/app/pages/hello-ionic/
文件夹中,找到并打开hello-ionic.ts
。
你可能已经注意到每一个页面都有本身的文件夹,该文件夹以页面命名。 在每一个文件夹内,咱们还能够看到一个.html和一个.scss同名文件。 例如,在
hello-ionic/
咱们将找到hello-ionic.ts
,hello-ionic.html
和hello-ionic.scss
。 虽然使用这种模式不是必需的,但它能够有助于保持项目的组织结构。
而后咱们找到HelloIonicPage
类,在建立的页面中提供了一个Angular组件和已经使用Ionic的导航系统加载的全部Ionic指令。注意,由于页面是动态加载的,因此它们没有选择器(selector
):
import { Component } from '@angular/core'; @Component({ templateUrl: 'hello-ionic.html' }) export class HelloIonicPage { constructor() { } }
全部的页面都会有一个类和一个关联的模版。让咱们再看一下src/app/pages/hello-ionic/hello-ionic.html
,这是一个模版页面:
<ion-header> <ion-navbar> <button ion-button menuToggle> <ion-icon name="menu"></ion-icon> </button> <ion-title>Hello Ionic</ion-title> </ion-navbar> </ion-header> <ion-content padding> <h3>Welcome to your first Ionic app!</h3> <p> This starter project is our way of helping you get a functional app running in record time. </p> <p> Follow along on the tutorial section of the Ionic docs! </p> <p> <button ion-button color="primary" menuToggle>Toggle Menu</button> </p> </ion-content>
<ion-navbar>
是这个页面中导航栏的模版。当咱们导航到这个页面,导航栏的按钮和标题做为页面转换的一部分进行过渡。
模板的其他部分是标准的Ionic代码,用于设置咱们的内容区域并输出咱们的欢迎信息。
要建立一个其余的页面,咱们不须要太多的事情,只要确保配置标题和咱们指望在导航栏显示的东西便可。
让咱们来看一下src/app/pages/list/list.ts
。在这里,你会看到一个新的页面被定义:
import { Component } from '@angular/core'; import { NavController, NavParams } from 'ionic-angular'; import { ItemDetailsPage } from '../item-details/item-details'; @Component({ templateUrl: 'list.html' }) export class ListPage { selectedItem: any; icons: string[]; items: Array<{title: string, note: string, icon: string}>; constructor(public navCtrl: NavController, public navParams: NavParams) { // If we navigated to this page, we will have an item available as a nav param this.selectedItem = navParams.get('item'); this.icons = ['flask', 'wifi', 'beer', 'football', 'basketball', 'paper-plane', 'american-football', 'boat', 'bluetooth', 'build']; this.items = []; for(let i = 1; i < 11; i++) { this.items.push({ title: 'Item ' + i, note: 'This is item #' + i, icon: this.icons[Math.floor(Math.random() * this.icons.length)] }); } } itemTapped(event, item) { this.navCtrl.push(ItemDetailsPage, { item: item }); } }
此页面将建立一个包含多个项目的基本列表页面。
总的来讲,这个页面和咱们以前看到的HelloIonicPage
很是类似。 在下一节中,咱们将学习如何导航到新页面!
回想上一部分咱们在ListPage
类中有一个函数,看起来像这样:
itemTapped(event, item) { this.navCtrl.push(ItemDetailsPage, { item: item }); }
你可能已经注意到咱们引用了一个ItemDetailsPage
。这是一个包含在教程启动器中的页面。咱们要在list.ts
中导入它,咱们能够这样导入:
... import { ItemDetailsPage } from '../item-details/item-details'; ...
保存好以后。你会发现ionic serve
将从新编译应用程序并刷新浏览器,你的修改将会出如今程序中。让咱们在浏览器中从新访问咱们的应用程序,当咱们点击一个项目,它将导航到项目详细信息页面!请注意,菜单切换按钮将被替换为后退按钮。这是Ionic遵循的原生风格,但能够按需配置。
Ionic 2 导航的工做原理就像一个简单的堆栈,咱们经过push
将一个页面推到堆栈的顶端,这会让咱们的应用前进一步并显示一个返回按钮。反之,咱们也能够pop
掉一个页面。由于咱们在构造函数中设置了this.navCtrl
,咱们能够调用this.navCtrl.push()
,并传递咱们要导航到的页面。咱们还能够传递一个数据对象给咱们想要导航到的页面。使用push
导航到新页面很简单,并且Ionic的导航系统很是的灵活。你能够查看导航文档找到更多高级导航示例。
当涉及到URL,Ionic 2的工做方式有点不一样于Ionic 1。不使用URL导航,能够确保咱们能够老是回到一个页面(例如应用程序启动)。这意味着咱们不仅是限于使用href来导航。不管怎样,咱们仍然能够选择在必要时使用网址导航到某个网页。
到此你已经完成了Ionic 2基本教程,了解了Ionic 2并开始朝着掌握Ionic 2进发。有能力的话最好去Ionic官网阅读完整的技术文档。
建议熟悉一下TypeScript的基本语法和使用,包括@types使用和d.ts编写。
掌握Angular2的基本原理和开发思路。
熟悉Ionic 2的全部Components和API。
了解Cordova的使用方法和插件。
祝在Ionic踩坑之路上越走越远。