ionic 教程
ionic 是一个强大的 HTML5 应用程序开发框架(HTML5 Hybrid Mobile App Framework )。 可以帮助您使用 Web 技术,比如 HTML、CSS 和 Javascript 构建接近原生体验的移动应用程序。ionic 主要关注外观和体验,以及和你的应用程序的 UI 交互,特别适合用于基于 Hybird 模式的 HTML5 移动应用程序开发。 ionic是一个轻量的手机UI库,具有速度快,界面现代化、美观等特点。为了解决其他一些UI库在手机上运行缓慢的问题,它直接放弃了IOS6和Android4.1以下的版本支持,来获取更好的使用体验。ionic 特点
1.ionic 基于Angular语法,简单易学。
2.ionic 是一个轻量级框架。
3.ionic 完美的融合下一代移动框架,支持 Angularjs 的特性, MVC ,代码易维护。
4.ionic 提供了漂亮的设计,通过 SASS 构建应用程序,它提供了很多 UI 组件来帮助开发者开发强大的应用。
5.ionic 专注原生,让你看不出混合应用和原生的区别
6.ionic 提供了强大的命令行工具。
7.ionic 性能优越,运行速度快。
ionic 创建 APP
ionic 创建 APP 使用 HTML、CSS 和 Javascript 来构建,所以我们可以创建一个 html 目录,并在目录下创建 index.html 文件,代码如下:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Todo</title> <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width"> <link href="lib/ionic/css/ionic.css" rel="stylesheet"> <script src="lib/ionic/js/ionic.bundle.js"></script> <!-- 在使用 Cordova/PhoneGap 创建的 APP 中包含的文件,由 Cordova/PhoneGap 提供,(开发过程中显示 404) --> <script src="cordova.js"></script> </head> <body> </body> </html>
以上代码中,我们引入了 Ionic CSS 文件、 Ionic JS 文件及 Ionic AngularJS 扩展ionic.bundle.js(ionic.bundle.js)。
ionic.bundle.js 文件已经包含了 Ionic核心JS、AngularJS、Ionic的AngularJS扩展,如果你需要引入其他 Angular 模块,可以从 lib/js/angular 目录中调用。
cordova.js 是在使用 Cordova/PhoneGap 创建应用时生成的,不需要手动引入,你可以在 Cordova/PhoneGap 项目中找到该文件,所以在开发过程中显示 404 是正常的。
创建 APP
接下来我们来实现一个包含标题、列表等的应用,设计图如下:
初始化 APP
创建一个新的 AngularJS 模块,并初始化,代码位于 html/app.js 中:
angular.module('todo', ['ionic'])在 index.html 文件的 <script src="cordova.js"></script> 上面引入 app.js 文件:
<script src="app.js"></script>修改 index.html 文件 body 标签的内容,代码如下所示:
<body ng-app="todo"> <ion-side-menus> <!-- 中心内容 --> <ion-side-menu-content> <ion-header-bar class="bar-dark"> <h1 class="title">Todo</h1> </ion-header-bar> <ion-content> </ion-content> </ion-side-menu-content> </ion-side-menus> </body>以上步骤我们已经完成了 ionic 基本 APP 的应用。
创建列表
首先创建一个控制器 TodoCtrl:
<body ng-app="todo" ng-controller="TodoCtrl">在app.js文件中,使用控制器定义列表数据:
angular.module('todo', ['ionic']) .controller('TodoCtrl', function($scope) { $scope.tasks = [ { title: 'SSLJ测试一' }, { title: 'www.sslj.com' }, { title: 'SSLJ测试二' }, { title: 'www.sslj.com' } ]; });在index.html页面中数据列表我们使用 Angular ng-repeat 来迭代数据:
<!-- 中心内容 --> <ion-side-menu-content> <ion-header-bar class="bar-dark"> <h1 class="title">Todo</h1> </ion-header-bar> <ion-content> <!-- 列表 --> <ion-list> <ion-item ng-repeat="task in tasks"> {{task.title}} </ion-item> </ion-list> </ion-content> </ion-side-menu-content>修改后 index.html body 标签内代码如下:
<body ng-app="todo" ng-controller="TodoCtrl"> <ion-side-menus> <!-- 中心内容 --> <ion-side-menu-content> <ion-header-bar class="bar-dark"> <h1 class="title">Todo</h1> </ion-header-bar> <ion-content> <!-- 列表 --> <ion-list> <ion-item ng-repeat="task in tasks"> {{task.title}} </ion-item> </ion-list> </ion-content> </ion-side-menu-content> </ion-side-menus> <script src="http://www.runoob.com/static/ionic/js/app.js"></script> <script src="cordova.js"></script> </body>
创建添加页面
修改 index.html 在 </ion-side-menus> 后添加如下代码:
<script id="new-task.html" type="text/ng-template"> <div class="modal"> <!-- Modal header bar --> <ion-header-bar class="bar-secondary"> <h1 class="title">New Task</h1> <button class="button button-clear button-positive" ng-click="closeNewTask()">Cancel</button> </ion-header-bar> <!-- Modal content area --> <ion-content> <form ng-submit="createTask(task)"> <div class="list"> <label class="item item-input"> <input type="text" placeholder="What do you need to do?" ng-model="task.title"> </label> </div> <div class="padding"> <button type="submit" class="button button-block button-positive">Create Task</button> </div> </form> </ion-content> </div> </script>
以上代码中我们通过 <script id="new-task.html" type="text/ng-template"> 定义了新的模板页面。
表单提交时触发 createTask(task) 函数。
ng-model="task.title" 会将表单的输入数据赋值给 task 对象的 title 属性。
修改 <ion-side-menu-content> 内的内容,代码如下:
<!-- 中心内容 --> <ion-side-menu-content> <ion-header-bar class="bar-dark"> <h1 class="title">Todo</h1> <!-- 新增按钮--> <button class="button button-icon" ng-click="newTask()"> <i class="icon ion-compose"></i> </button> </ion-header-bar> <ion-content> <!-- 列表 --> <ion-list> <ion-item ng-repeat="task in tasks"> {{task.title}} </ion-item> </ion-list> </ion-content> </ion-side-menu-content>
app.js 文件中,控制器代码如下:
angular.module('todo', ['ionic']) .controller('TodoCtrl', function($scope, $ionicModal) { $scope.tasks = [ { title: 'SSLJ测试一' }, { title: 'www.sslj.com' }, { title: 'SSLJ测试二' }, { title: 'www.sslj.com' } ]; // 创建并载入模型 $ionicModal.fromTemplateUrl('new-task.html', function(modal) { $scope.taskModal = modal; }, { scope: $scope, animation: 'slide-in-up' }); // 表单提交时调用 $scope.createTask = function(task) { $scope.tasks.push({ title: task.title }); $scope.taskModal.hide(); task.title = ""; }; // 打开新增的模型 $scope.newTask = function() { $scope.taskModal.show(); }; // 关闭新增的模型 $scope.closeNewTask = function() { $scope.taskModal.hide(); }; });
至此,一个简单的Hybrid App已经基本完成。
SSLJ-APP文件结构目录
示例目录结构如下,请严格按照目录结构建立相关的可视化文件目录
可以看到,整个项目组织结构分为:框架目录、可视化文件结构目录。每个可视化文件结构目录下应有如下分目录或文件:css文件夹(放置该控制器下所有的css样式)、images文件夹(放置该控制器下所有的图片资源)、js文件夹(包含controller文件夹、service文件夹、module文件等)和template文件夹(放置该控制器下所有模板)。
每个controller.js依赖于对应的service.js,而service.js依赖于module.js,而module.js实在main.js中引用的。在index.html中又引用了main.js文件。这样整个项目就通过这根线串联起来。
核心代码如下:
index.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/> <meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1"/> <meta http-equiv="pragma" content="no-cache"/> <meta http-equiv="cache-control" content="no-store, must-revalidate"/> <meta http-equiv="expires" content="0"/> <meta name="format-detection" content="telephone=no" searchtype="map"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-status-bar-style" content="white"> <title></title> <link href="../ionic/css/ionic.min.css" rel="stylesheet"> <link href="css/tabs.css" rel="stylesheet"> <!--<link href="school/css/school.css" rel="stylesheet">--> <!--<link href="mine/css/mine.css" rel="stylesheet">--> </head> <body> <!-- The nav bar that will be updated as we navigate between views. --> <ion-nav-bar class="bar-stable"> <ion-nav-back-button> </ion-nav-back-button> </ion-nav-bar> <!-- The views will be rendered in the <ion-nav-view> directive below Templates are in the /templates folder (but you could also have templates inline in this html file if you'd like). --> <ion-nav-view></ion-nav-view> </body> </html> <script type="text/javascript">var IsDebug = true;</script>//浏览器调试模式,正式发布时请务必注释 <script type="text/javascript" src="../kerkee.js"></script>//跨平台开发框架,解决跨域问题 <script type="text/javascript" src="../core/require.js" data-main="main.js"></script> //require.js:在里面可实现模块化开发,可加入相关指令。封装相关方法。不建议改动
'use strict'; //requirejs通用模块设置 requirejs.config({ baseUrl: "../../html", paths: { core: "core", api: "core/coreApi", deviceInfo: "core/coreApi/device/deviceInfo",//调用原生相关功能 ionic: "ionic/js/ionic.bundle.min", app: "modules/app", appController: "modules/appController", appService: "modules/appService", homeModule: "modules/home/js/homeModule", md5: "core/coreApi/device/md5", //调用原生相关功能 bootstrap: "modules/bootstrap" }, shim: { app: { exports: "app" }, util: { exports: "util" }, deviceInfo: { exports: "deviceInfo" }, ionic: { exports: "ionic" }, appController: { exports: "controllers" }, appService: { exports: "services" }, homeModule: { exports: "homeModule" }, md5: { exports: "md5" }, bootstrap: { deps: ["deviceInfo", "ionic"], exports: "bootstrap" } }, deps: [ 'bootstrap' ] });
以上代码中,我们引入了 Ionic CSS 文件、 Ionic JS 文件及 Ionic AngularJS 扩展ionic.bundle.js(ionic.bundle.js)。
ionic.bundle.js 文件已经包含了 Ionic核心JS、AngularJS、Ionic的AngularJS扩展,如果你需要引入其他 Angular 模块,可以从 lib/js/angular 目录中调用。
相关推荐
【标题】"ionic-app-base-master.zip" 是一个包含 Ionic 应用基础结构的压缩包,主要针对使用 Ionic 框架开发移动应用的开发者。Ionic 是一个流行的开源框架,它基于 Angular 并利用 Cordova 或 Capacitor 实现原生...
Angular-ionic-native-http-connection-backend.zip,离子型和iosionic本机http连接后端cors问题的解决方案,Angularjs于2016年发布,是Angularjs的重写版。它专注于良好的移动开发、模块化和改进的依赖注入。angular...
本文将深入探讨“ionic-hybrid-app-demo”,这是一个使用AngularJS和Ionic框架构建的混合应用程序示例。混合应用程序结合了原生移动应用的功能与Web技术的优势,使得开发者可以用HTML、CSS和JavaScript来创建跨平台...
"ionic-datepicker-oysq"是一个专为Ionic框架设计的日期选择器插件,它使得在Ionic应用中集成日期选择功能变得更加简单和高效。 Ionic是一款基于AngularJS的开源框架,用于构建跨平台的混合移动应用。它提供了丰富...
这个压缩包文件名为"ionic-cordova-demo-master.zip",暗示它包含了一个基于Ionic和Cordova框架的演示应用程序的源代码。 Ionic是一款流行的开源框架,用于构建高性能的混合移动应用,而Cordova则是一个移动应用开发...
比较几款跨平台移动端开发app框架hybrid app flutter React WeeX不看好这个 kotlin也不看好 cordova phoneGap ionic hbuilder(uni-app) HERO
总结起来,"ionic-cz-conventional-changelog" 是前端开发中一个实用的工具,它为 changelog 的规范化管理提供了便利,与 commitizen 的集成使得提交信息更有序,从而提升了项目的整体质量和专业性。在实践中,掌握...
在开发基于Ionic框架的应用程序时,开发者可能会遇到一个常见的问题:APP在启动时出现白屏现象。这不仅影响用户体验,也可能让初次接触Ionic的人感到困惑。本文将详细讲解如何处理这个困扰,主要针对 Ionic App 的...
因此,我们不再维护Ionic App脚本,我们建议开发人员将其应用程序更新为最新的框架版本。 它提供了一些新功能,错误修复,性能改进以及Ionic应用程序的最新工具。 有关如何升级的更多详细信息,请查看我们的。离子...
该项目是一款基于Ionic2框架构建的简易新闻客户端,采用TypeScript语言编写,源码包含87个文件,涵盖了48个PNG图片、12个TypeScript文件、8个HTML文件、7个SCSS样式文件、5个JSON配置文件等,旨在提供便捷的新闻阅读...
Angular-ionic-forms-and-validations.zip,使用这个Ionic示例应用程序学习如何处理Ionic 3和Angular 4中的表单和验证。在这个精彩的教程中,我们将介绍简单的和自定义的验证,并教您如何处理错误消息。,Angularjs于...
标题中的“仿24季app,基于ionic框架开发的移动端app.zip”表明这是一个使用Ionic框架构建的移动应用程序项目,模仿了“24季”的应用功能。Ionic是一个流行的开源框架,用于构建高性能的混合移动应用程序,它利用Web...
该库添加@ionic-native/http (如果可用)作为与Angular的Http和HttpClient的连接后端 动机 现在,Apple促进/要求使用WKWebView而不是不推荐使用的UIWebView ,Ionic已通过其切换了新创建的应用程序(而Cordova通过...
"ionic-sublime-plugin"的主要功能是提供对Ionic框架的智能提示和代码补全,它极大地简化了编写和理解AngularJS与Ionic组件的过程。 在使用"ionic-sublime-plugin"时,开发者可以期待以下几点核心功能: 1. **智能...
ionic-ion-swipe-cards, 基于Swipeable卡的离子和 Angular 布局 Ionic: Swipeable卡基于Swipeable卡的离子和 Angular 布局。 如果冻应用所见。演示工具用法在你的离子和 Angular的剩余部分包含 ionic.swipecards.js ...
基于ionic+cordova+angularJs搭建移动端App开发环境。
本文讨论了如何使用Ionic和Cordova(PhoneGap)开发跨平台移动Hybrid App。Ionic是一个专注于使用Web开发技术,基于HTML5创建类似于手机平台原生应用的开发框架。Cordova提供了丰富的原生接口,解决了移动端原生功能...
在本文中,我们将深入探讨如何使用Ionic 3框架进行移动应用开发,并专注于创建一个基于TypeScript和HTML的蓝牙串口助手。Ionic 3是Angular框架的一个版本,它为构建跨平台的原生移动应用提供了便利。它利用Web技术如...