热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Cordova3.x基础(10)--UI框架IonicFramework

Ionic是Drifty继Codiqa(基于Web的jQueryMobile构建工具)和Jetstrap(基于Web的TwitterBootstrap构建工具)之后的第三个项目。面向
Ionic是 Drifty继 Codiqa(基于 Web 的 jQuery Mobile构建工具)和 Jetstrap(基于 Web 的 Twitter Bootstrap 构建工具)之后的第三个项目。面向使用HTML5开发混合式应用的的前端UI开源框架。

http://ionicframework.com/

Demos http://codepen.io/ionic/public-list
Showcase http://showcase.ionicframework.com/
Forum http://forum.ionicframework.com/
Documentation http://ionicframework.com/docs/
Learn Ionic http://learn.ionicframework.com/
Ionic Crash Course https://www.youtube.com/watch?v=C-UwOWB9Io4
Ionic Tutorial http://ccoenraets.github.io/ionic-tutorial/
Structure of an Ionic App http://mcgivery.com/structure-of-an-ionic-app/

Book:
Manning: Ionic in Action

ngCordova:Cordova API的AngularJS 扩展
Ionicons:免费的icon font
Ionic Creator:在线可视化工具

https://github.com/ecofic/ngCordovaMocks:ngCordovaMocks
https://github.com/driftyco/ionic-cordova-android-vagrant:Ionic Cordova Android Vagrant

官方Blog上推荐的Built with Ionic应用:
  • Songhop https://songhop.fm/
  • Mallzee http://mallzee.com/
  • Sworkit http://sworkit.com/
  • Coride https://coride.co/
  • Throwback http://www.throwbacknow.com/
  • HabitRPG https://habitrpg.com/static/front
  • Crafted Here http://www.craft-boom.com/
  • FitRPG http://fitrpg.co/

目前版本发布的速度很快,具体可以参考 https://github.com/driftyco/ionic/blob/master/CHANGELOG.md

需要注意的是:
  • 目前还是Beta版
  • 面向Hybrid Mobile App而不是Mobile Web App
  • 只支持iOS 6+ / Android 4+
和jQuery Mobile不同的是Ionic只关注的是UI部分,类似的还有Twitter Bootstrap, Foundation, Ratchet, Topcoat 等。可以看看官方对框架的解释: Where does the Ionic Framework fit in?。熟悉Bootstrap的还可以试试基于Angularjs和Bootstrap 3的 Mobile Angular UI with Bootstrap 3。

来源: http://coenraets.org

  • 采用Sass/Gulp、基于AngularJS、零jQuery、最小化DOM操作
  • 非常棒的性能、漂亮的界面设计、详细的文档、活跃的社区
Ionic提供了很多Directive指令(使用Javascript来实现语义化标签,类似于jsp的taglib)实现丰富的UI控件、大量的常用icon ( Icon Pack)、使用AngularUI Router模块来记录页面路由、采用Hammer.js做多点触控、通过AngularJS的扩展做UI交互、左右滑动菜单、下拉更新、自定义主题(核心CSS基于Sass).......。官方网站也提供了很详细的使用说明。

安装ionic
引用 $ npm install -g cordova gulp ionic

新建项目
引用 $ ionic start myApp blank  新建一个空白页面
$ ionic start myApp tabs  新建一个带底部标签的页面
$ ionic start myApp sidemenu 新建一个带侧边栏的页面


运行项目
引用 $ cd MyApp
$ ionic platform add ios
$ ionic build ios
$ ionic emulate ios


另外项目用到gulp来做自动化项目构建。

其中start一个项目的时候是从github上下载 seed工程后展开使用,所以也可以通过Cordova CLI创建一个工程后删除www文件夹,从github上下载 seed工程后解压覆盖www文件夹即可。


也可以从 http://code.ionicframework.com/手动下载。


--> 2014/05/19
安装或更新时候的错误:


①提示以下错误是因为没有安装Python:
引用 gyp ERR! configure error
gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable.
gyp ERR! stack     at failNoPython (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\configure.js:113:14)
gyp ERR! stack     at C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\configure.js:81:11
gyp ERR! stack     at Object.oncomplete (fs.js:107:15)


②如果安装的是python3比如python-3.4.0,会提示以下错误,安装python-2.7.6就OK啦。
引用 gyp ERR! configure error
gyp ERR! stack Error: Python executable "python" is v3.4.0, which is not supported by gyp.
gyp ERR! stack You can pass the --python switch to point to Python >= v2.5.0 & <3.0.0.
gyp ERR! stack     at failPythonVersion (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\configure.js:118:14)
gyp ERR! stack     at C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\configure.js:107:9
gyp ERR! stack     at ChildProcess.exithandler (child_process.js:635:7)
gyp ERR! stack     at ChildProcess.EventEmitter.emit (events.js:98:17)
gyp ERR! stack     at maybeClose (child_process.js:735:16)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (child_process.js:802:5)


【原因】
查看了一下CLI的源代码,ionic引入了vinyl-fs的依赖,用于npm\node_modules\ionic\lib\ionic\serve.js中,vinyl-fs的vfs.watch('www/**/*'),而它又有子依赖:vinyl-fs@0.1.4 -> glob-watcher@0.0.6 -> gaze@0.6.4。gaze的源码是C++的,需要做本地编译, node-gyp是Node.js本地代码编译构建工具,查看它的安装说明,需要Python2不支持Python3,还需要Visual Studio C++的支持。再查看 ionic-cli的修改历史记录,发现是为了支持Livereload才引入了vinyl-fs。

本地测试:

(1)启动Python
进入工程的www文件夹,执行“python -m SimpleHTTPServer 8000”后,在Chrome或Safari中输入“http://localhost:8000”就可以测试了。

(2)启动Gulp
项目用到gulp来做自动化项目构建

修改gulpfile.js
Js代码  收藏代码
  1. var gulp = require('gulp'),  
  2.   connect = require('gulp-connect');  
  3.   
  4. gulp.task('connect'function() {  
  5.   connect.server({  
  6.     root: 'www',  
  7.     livereload: true  
  8.   });  
  9. });  
  10.   
  11. gulp.task('html'function () {  
  12.   gulp.src('./www/*.html').pipe(connect.reload());  
  13. });  
  14.   
  15. gulp.task('watch'function () {  
  16.   gulp.watch(['./www/*.html'], ['html']);  
  17. });  
  18.   
  19. gulp.task('default', ['connect''watch']);  


引用 $ cd myApp
$ npm install -g gulp
$ npm install
$ gulp

访问: http://localhost:8080

(3)其他HTTP server
还有很多其他的Simple HTTP server,比如: http-server 就是一个NodeJS 下很好用的HTTP Server
引用 npm install http-server -g

基本使用:
Html代码  收藏代码
  1. >  
  2. <html>  
  3.   <head>  
  4.     <meta charset="utf-8">  
  5.     <meta name="viewport" content=">  
  6.       
  7.     <link href="lib/ionic/css/ionic.css" rel="stylesheet">  
  8.       
  9.     <script src="lib/ionic/js/ionic.bundle.js">script>  
  10.     <SCRIPT LANGUAGE="Javascript">  
  11.     
  12.       // 创建一个AngularJS模块并告诉Angular初期化它  
  13.       angular.module('starter', ['ionic']);  
  14.     //-->  
  15.     SCRIPT>  
  16.   head>  
  17.   <body ng-app="starter">  
  18.     <ion-header-bar class="bar-positive">  
  19.       <h1 class="title">headerh1>  
  20.     ion-header-bar>  
  21.     <ion-content padding="true">  
  22.       <h1>Hello wrold!h1>  
  23.     ion-content>  
  24.     <ion-footer-bar align-title="left" class="bar-assertive">  
  25.       <h1 class="title">footerh1>  
  26.     ion-footer-bar>  
  27.   body>  
  28. html>  


  • 整体是 SPA(Single Page Application)
  • 除过index.html外的所有页面(放入templates文件夹下)通过Ajax加载
  • 基于Angular UI做页面路由
  • Controller中做事件绑定和数据绑定
  • View复杂的处理使用Directive・Filter
  • Model中的共通处理委托给Service、Factory

单纯使用CSS(ionic很多功能是通过JS实现的所以只使用单纯CSS意义不大):
Html代码  收藏代码
  1. >  
  2. <html>  
  3.   <head>  
  4.     <meta charset="utf-8">  
  5.     <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, >  
  6.     <link href="lib/ionic/css/ionic.css" rel="stylesheet">  
  7.   head>  
  8.   <body>  
  9.     <div class="bar bar-header bar-positive">  
  10.       <h1 class="title">headerh1>  
  11.     div>  
  12.     <div class="scroll-content has-header has-footer">  
  13.       <div class="card">  
  14.         <div class="item item-divider">  
  15.           I'm a Header in a Card!  
  16.         div>  
  17.         <div class="item item-text-wrap">  
  18.           This is a basic Card with some text.  
  19.         div>  
  20.         <div class="item item-divider">  
  21.           I'm a Footer in a Card!  
  22.         div>  
  23.       div>  
  24.       <div class="card">  
  25.         <div class="item item-divider">  
  26.           I'm a Header in a Card!  
  27.         div>  
  28.         <div class="item item-text-wrap">  
  29.           This is a basic Card with some text.  
  30.         div>  
  31.         <div class="item item-divider">  
  32.           I'm a Footer in a Card!  
  33.         div>  
  34.       div>  
  35.     div>  
  36.     <div class="bar bar-footer bar-positive">  
  37.       <h1 class="title">footerh1>  
  38.     div>  
  39.   body>  
  40. html>  


几个完整的Project模板ionFullApp、ionWordpress。
http://codecanyon.net/collections/4884964-ionic-apps

AngularJS Chrome调试插件Batarang
Building Beautiful Mobile Apps In Visualforce Using AngularJS And Ionic Part 1、 Part 2、 Part 3
http://www.zhouwenbin.com/tag/ionic/
http://julienrenaux.fr/2014/05/09/ionic-framework-features-you-may-have-missed/

推荐阅读
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了使用Python解析C语言结构体的方法,包括定义基本类型和结构体类型的字典,并提供了一个示例代码,展示了如何解析C语言结构体。 ... [详细]
  • 实现一个通讯录系统,可添加、删除、修改、查找、显示、清空、排序通讯录信息
    本文介绍了如何实现一个通讯录系统,该系统可以实现添加、删除、修改、查找、显示、清空、排序通讯录信息的功能。通过定义结构体LINK和PEOPLE来存储通讯录信息,使用相关函数来实现各项功能。详细介绍了每个功能的实现方法。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 李逍遥寻找仙药的迷阵之旅
    本文讲述了少年李逍遥为了救治婶婶的病情,前往仙灵岛寻找仙药的故事。他需要穿越一个由M×N个方格组成的迷阵,有些方格内有怪物,有些方格是安全的。李逍遥需要避开有怪物的方格,并经过最少的方格,找到仙药。在寻找的过程中,他还会遇到神秘人物。本文提供了一个迷阵样例及李逍遥找到仙药的路线。 ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
  • 本文介绍了Codeforces Round #321 (Div. 2)比赛中的问题Kefa and Dishes,通过状压和spfa算法解决了这个问题。给定一个有向图,求在不超过m步的情况下,能获得的最大权值和。点不能重复走。文章详细介绍了问题的题意、解题思路和代码实现。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了Flutter添加APP启动StoryView相关的知识,希望对你有一定的参考价值。 ... [详细]
author-avatar
hro5028136
这个家伙很懒,什么也没留下!
Tags | 热门标签
RankList | 热门文章
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有