离子框架
Ionic是一个高性能的移动开发框架,其中包含大量针对移动设备进行了优化的组件,可帮助您快速构建具有吸引力且易于使用的移动应用程序。 它包括用于移动设备优化的导航,滚动,侧边菜单和键盘管理的行为功能; 用于表单,按钮,列表和通用布局CSS模块; 以及700多个图标。 Ionic具有使用Apache Cordova框架创建混合应用程序的其他功能,但本教程未介绍它们。
Ionic支持iOS 6+和Android 4.0+,覆盖98%的iOS设备和90%的Android设备。 使用此框架,您可以快速创建简单和复杂的混合应用程序。
本教程的先决条件
- 您应该安装了IBM MobileFirst命令行工具。 您将使用它们来创建项目,应用程序和环境。
- 或者,您仍然可以使用IBM MobileFirst Studio。 下载IBM MobileFirst Studio开发人员版 。
- 您应该熟悉使用IBM MobileFirst Platform创建混合应用程序的基础知识。
Ionic应用程序入门
创建一个名为名称ToolsProject的新MobileFirst项目和一个名为AmazingApp的混合应用程序。 将Android环境添加到应用程序:
mfp create IonicProject
cd IonicProject
mfp add hybrid AmazingApp
cd apps/AmazingApp
从现在开始,执行IonicProject/apps/AmazingApp
目录中的所有命令。
将离子文件添加到您的应用程序
从Ionic网站下载最新版本的Ionic框架 。 本教程使用1.0.0-beta14版本。 您可以直接下载此版本 。
创建一个名为common/ionic
的新目录,并将下载的.zip文件解压缩到其中。 像这样构造公共目录:
common
├── css/
├── images/
├── index.html
├── ionic/
│ ├── css/
│ ├── fonts/
│ ├── js/
│ └── version.json
└── js/
Ionic随附了AngularJS的捆绑版本,该版本提供了大多数巧妙的功能。 有关AngularJS框架的一般信息,请访问AngularJS网站 。 有关特别好的AngularJS教程,请访问Thinkster网站 。
增强index.html
编辑common/index.html
以加载Ionic及其依赖项:
<html>
<head>
<!-- pre-existing <head> content here -->
<!-- New lines to load Ionic CSS -->
<link rel="stylesheet" href="ionic/css/ionic.css" />
</head>
<body>
<!-- pre-existing <body> content here -->
<!-- New lines to load Ionic JS bundle -->
<script src="ionic/js/ionic.bundle.js"></script>
</body>
</html>
Ionic项目提供了一个名为ionic.bundle.js
的便捷程序包,可帮助您加载基本的Ionic环境。 它包含了:
-
ionic.js
-
ionic-angular.js
-
angular/angular.js
-
angular/angular-animate.js
-
angular/angular-sanitize.js
-
angular-ui/angular-ui-router.js
除了加载ionic.bundle.js
,您还可以单独加载这些文件,对于复杂的应用程序可能更易于管理。 如果使用Bower和wiredep,则将注入单个文件。
加载Ionic和AngularJS
现在,您已经在应用程序中包含了Ionic框架及其依赖项,您需要启动它。 因为Ionic是AngularJS的一组扩展,所以加载模式与AngularJS的加载模式相同,这称为引导 AngularJS。 但是,您需要让IBM MobileFirst Platform(MFP)在引导AngularJS之前完成其自身的加载序列,这可以通过指示MFP在就绪时引导AngularJS来完成。 编辑js/main.js
文件, wlCommonInit()
如下所示调整wlCommonInit()
函数:
function wlCommonInit() {
// Pre-existing wlCommonInit() content here
// New lines to bootstrap AngularJS
angular.element(document).ready(function() {
angular.bootstrap(document, ['app-main']);
});
}
此代码告诉AngularJS使用名为App的基本模块引导您的应用程序。 您尚未编写应用程序或定义模块app-main,所以现在就这样做。
编写您的Ionic应用程序
由于Ionic包含用于侧菜单和导航的强大功能,因此您将创建一个具有三个视图的基本应用程序,并创建侧菜单项以在这些视图之间进行手动切换。 当然,离子具有许多附加功能!
该应用程序将详细介绍一些天文物体-行星和黑洞。 数据将是静态的,但如果需要,您可以使用AngularJS MVC工具添加动态功能。
图1.应用程序主屏幕
图2.应用程序侧栏
创建应用程序模块
每个AngularJS应用程序都需要一个应用程序模块。 在引导AngularJS时,您引用了一个名为app-main
。 立即创建该模块。 创建一个名为common/app
的目录和一个名为common/app/app-main.js
,并将以下代码行放入其中:
angular.module('app-main', ['ionic']);
该行定义了一个具有以下依赖关系的app-main模块:ionic。 因为您已将app-main定义为应用程序模块,所以ionic将作为其依赖项之一自动加载。 通过调整index.html
确保正确加载了它:
<body>
<!-- pre-existing <body> content here -->
<!-- New lines to load Ionic JS bundle -->
<script src="ionic/js/ionic.bundle.js"></script>
<!-- Load the application -->
<script src="app/app-main.js"></script>
</body>
使应用程序执行某些操作
给您的应用程序一些内容:编辑index.html
并用以下代码替换Hello MobileFirst
:
<!--application UI goes here-->
<!-- Hello MobileFirst -->
<ion-side-menus>
<ion-side-menu-content>
<!-- Ionic places our views here-->
<!-- Configure the global navigation/title bar -->
<ion-nav-bar class="bar-dark">
<!-- Default buttons -->
<ion-nav-buttons side="primary">
<!-- "Hamburger" menu -->
<button menu-toggle="left" class="button button-icon icon ion-navicon"></button>
</ion-nav-buttons>
<!-- Automatic back button -->
<ion-nav-back-button></ion-nav-back-button>
</ion-nav-bar>
<!-- Contains our views -->
<ion-nav-view></ion-nav-view>
</ion-side-menu-content>
<ion-side-menu side="left">
<!-- Define our left-hand-side menu -->
<header class="bar bar-header bar-dark">
<h1 class="title">Amazing Menu!</h1>
</header>
<ion-content class="has-header">
<ion-list>
<ion-item nav-clear menu-close href="#/home" class="item-icon-left">
<i class="icon ion-ios7-home"></i> Home
</ion-item>
<ion-item class="item-divider">
Amazing Things
</ion-item>
<ion-item nav-clear menu-close href="#/planets" class="item-icon-left">
<i class="icon ion-planet"></i> Planets
</ion-item>
<ion-item nav-clear menu-close href="#/blackholes" class="item-icon-left">
<i class="icon ion-funnel"></i> Black Holes
</ion-item>
</ion-list>
</ion-content>
</ion-side-menu>
</ion-side-menus>
您还需要调整MFP默认样式表,以使Ionic正常工作。 编辑common/css/main.css
并添加以下规则:
body {
position: initial;
}
第一次运行该应用程序:
mfp build
mfp deploy
mfp preview
如果您使用的是MFP Studio,请构建,部署和预览应用程序。 还没有内容,但是您可以看到,单击时,“汉堡包”按钮将打开侧面菜单。 您也可以滑动菜单以打开和关闭。 这些按钮无效,因此请添加一些内容。
向您的应用程序添加内容
您的全局导航已定义,但是您还没有任何内容。 Ionic在视图中组织其内容,您需要先定义这些视图,然后才能知道如何显示它们。 为此,请编辑common/app/app-main.js
文件,并进行如下调整:
angular.module('app-main', ['ionic'])
.config(function($stateProvider, $urlRouterProvider) {
// Define our views
$stateProvider.state('home', {
url: "/home",
templateUrl: 'views/home.html'
// If you wanted some AngularJS controller behaviour...
// controller: "HomeCtrl as ctrl"
});
$stateProvider.state('planets', {
url: "/planets",
templateUrl: 'views/planets.html'
});
$stateProvider.state('blackholes', {
url: '/blackholes',
templateUrl: 'views/blackholes.html'
});
// Default view to show
$urlRouterProvider.otherwise('/home');
});
在这里,您已经定义了三个视图。 其中之一(主视图)被指定为默认值。
定义视图内容
创建一个名为common/views
的文件夹,然后创建一个名为common/views/home.html
的文件,然后使用以下内容填充该文件:
<ion-view hide-back-button="true" title="Space!">
<ion-pane>
<ion-content overflow-scroll="true">
<div class="list card">
<ion-item class="item-image">
<img src="https://upload.wikimedia.org/wikipedia/commons/c/c3/NGC_4414_%28NASA-med%29.jpg">
</ion-item>
<ion-item>Full of wonderful things. Take a look!</ion-item>
</div>
<div class="list card">
<ion-item class="item-icon-right item-icon-left" href="#/planets">
<i class="icon ion-planet"></i>
Planets
<i class="icon ion-ios7-arrow-forward"></i>
</ion-item>
<ion-item class="item-icon-right item-icon-left" href="#/blackholes">
<i class="icon ion-funnel"></i>
Black Holes
<i class="icon ion-ios7-arrow-forward"></i>
</ion-item>
</div>
</ion-content>
</ion-pane>
</ion-view>
添加第二个文件common / views / planets.html:
<ion-view title="Planets">
<ion-pane>
<ion-content overflow-scroll="true">
<div class="list card">
<ion-item class="item-text-wrap">
<h2>Jupiter</h2>
<p>The largest planet in the solar system.</p>
</ion-item>
<ion-item class="item-image">
<img src="https://upload.wikimedia.org/wikipedia/commons/5/5a/Jupiter_by_Cassini-Huygens.jpg">
</ion-item>
</div>
<div class="list card">
<ion-item class="item-text-wrap">
<h2>Saturn</h2>
<p>The second largest planet in the solar system.</p>
</ion-item>
<ion-item class="item-image">
<img src="https://upload.wikimedia.org/wikipedia/commons/2/25/Saturn_PIA06077.jpg">
</ion-item>
</div>
</ion-content>
</ion-pane>
</ion-view>
添加第三个文件common / views / blackholes.html:
<ion-view title="Black Holes">
<ion-pane>
<ion-content overflow-scroll="true">
<div class="list card">
<ion-item class="item-text-wrap">
<h2>Black Hole A</h2>
<p>Simulated view of a black hole (center) in front of the Large
Magellanic Cloud.</p>
</ion-item>
<ion-item class="item-image">
<img src="https://upload.wikimedia.org/wikipedia/commons/5/5e/BH_LMC.png">
</ion-item>
</div>
<div class="list card">
<ion-item class="item-text-wrap">
<h2>Pictures are hard to find</h2>
<p>"Well, the thing about a black hole - its main distinguishing
feature - is it's black. And the thing about space - the colour of
space, your basic space colour - is black. So how are you supposed
to see them?" -- Holly, "Red Dwarf"</p>
</ion-item>
</div>
</ion-content>
</ion-pane>
</ion-view>
查看完成的申请
再次预览您的应用程序:
mfp build
mfp deploy
mfp preview
从本文下载带有工作代码的示例MobileFirst Platform项目 。
结论
在本教程中,您学习了如何使用Ionic通过IBM MobileFirst Platform快速创建混合应用程序。
翻译自: https://www.ibm.com/developerworks/websphere/library/techarticles/1502_maynard/1502_maynard.html