http://www.tuicool.com/articles/iY3ENvY

最近 Facebook React 团队释出了 React Native, 用来构建 Mobile Native 应用. 非常给力的口号即是标题所指: Learn Once, Use Anywhere.

我突然觉得, 他们正好把我思想的口号给用去了( 不过我没想到这么美的词 ), 因为我已经在更早的时候就决定要讲一讲 Ionic 了, 这个口号也同样是: Learn Once, Use Anywhere, 但是, 加了一句, For AngularJS.

开始 Ionic 之前, 我们要先回顾下历史.

Web 领域的历程

Web 领域从 1995 年第一个真正的网站建立到 2015 年, 发展的飞起. 整体而言, 我认为经历了以下发展阶段:

  1. 原始期 - 拼接字串( 用 C, C++, Bash 编写 CGI )
  2. 语言期 - 专为 Web 而生的语言 php, 商业化项目 jsp
  3. MVC 框架期 - Java 秀的飞起, 最著名的当属 J2EE, 以及后起之秀 Spring
  4. MVC 框架颠峰期 - 当属 Rails, 将动态语言的优势发挥到极致, 以及各种语言衍生的一大批类 Rails 框架
  5. 前后端分离期 - 目前所处的 "混乱" 时期

我认为, 前后端分离是必然的趋势, 切看我的分析.

前后端分离的必然原因

Web 刚兴起的时候, 它真的只是 "Web", 它只管浏览器的渲染, 大家头疼的只是各家浏览器的兼容性问题. 于是乎, jQuery, Bootstrap 等和它们的组件们层出不穷, 来解决这类问题.

随着 Web3.0 的到来( 我参考 <文明之光> 发明的词, 意指移动端 Web 的起步 ), 我们发现, 现在的问题不是浏览器的问题了, 而是伴随着各种各样的屏幕, 以及各种各样的嵌入Web. 而且, 最擅长构建界面的 Web 技术还没有打入 APP 阵营.

我们以前的经验似乎都不够用了, 但是, 我们发现, 如果不把浏览器当浏览器, 而把它们当作数据处理层( 这要求浏览器拥有很高的计算能力, 以前这不可想像, 而但是, 一个 iPhone5 的手机处理能力超过几年前的一个 PC ), 服务器只提供数据( 目前最流行的方案即 Restful API ), 如此, 我们就可以解决 Web3.0 下的主要的问题:

  1. 屏幕的多样性( Web 渲染技术是目前最强大的 UI 渲染技术, 没有之一, 可以渲染各种屏幕效果无压力 )
  2. 用户体验 ( 在移动网络还不够给力的时候, 前端代码预先下载简直完美 )

通过这样的革新, Web 技术自然而然渗入到原生 App 的领域. 其优势在于:

  1. 开发效率更高( 我认为等到 Web APP 技术成熟, 至少十倍于原生 App 开发效率 )
  2. 跨平台开发( Web APP 可以做到基本跨平台使用, 并且随着技术推进, 可以做到接近原生性能 )
  3. 最重要的一点, 学一次, 到处用.( 当你掌握了前后端分离的开发技术, 你既可以写 APP, 又可以做网站, 不仅 iOS, 而且 Android, 甚至于 WinPhone )

既然如此, 是时候影响到原有的 Web 开发技术了:

在 Web3.0 的发展下, 传统的 MVC 框架, 会转变为前后端分离的开发方式. 这样, 你就可以学一次, 到处用.

AngularJS 领域下的 Learn once, Use Anywhere 新秀: Ionic

AngularJS 是一个类似于 Rails 的全栈式的前端框架, 它拥有自己的路由, 控制器, 作用域, 和组件, 非常适合作为前端的全栈基础框架. 而 Ionic 正是基于它而完成一个框架:

  1. Ionic 目标是开发原生 APP 而不是 Web APP, 从体验上如此.
  2. Ionic 可以操作大部分原生 API, 因为它基于 Cordova ( 一个可以用 JS 操作原生 API 的基础项目 )
  3. Ionic 是面向未来的框架, 换句话说, 它是为新手机准备的.( 官方仅支持 iOS6+, Android4.1+ )

Ionic 的技术构成为:

  1. AngularJS 为基础, 在其上封装了众多组件, 如 侧面滑动, Tabs, 刷新, 无限滚动等等你能想到的与原生 APP 类似的组件.
  2. 一套 CSS 样式, 一方面配合上面的组件, 另一方面并提供给你使用.
  3. 一套改进的工作流, 基于我之前那篇 Web 工作流里用到的所有的工具.( 默认是 NodeJS, Gulp, Bower )
  4. 一套命令行工具, 帮助你快速开发, 测试, 构建, 发布你的 APP.

Ionic 工作流非常简单:

  1. ionic start myapp [template]
  2. 像 AngularJS 应用一样写自己的页面与控制器( 与原生效果几乎一致 )
  3. ionic platform add ios
  4. ionic build ios
  5. ionic emulate ios

一些国内的例子:

  1. CNodeJS
  2. WBlogApp
  3. Ionic ShowCase

就在最近, Ionic 上线了 LiveReload 功能, 你可以在模拟器与测试机器( 没错, 是你的手机 )上, 得到实时的代码刷新功能.( 此刻, 我想, 真正的 iOS 工程师还在编译他们的 xcode 吧.)

如果你就是工程师, 马上去试试吧: http://ionicframework.com/getting-started/

在这个领域, Ionic 的野心就跟 Web2.0 时代的集大成者 Rails 一样大, 都想建立整个开发流的生态环境.

反哺 Web2.0

一旦你的团队计划一并开发 APP, Web APP, 以及网站, 那么, 最佳的选择即是一套前后端分离的技术栈, 它可能是这样:

  1. AngularJS( 前端框架 )
  2. Ionic ( APP 全栈框架 )
  3. Angular UI ( Bootstrap for AngularJS )
  4. Rails / ExpressJS / Go( API 后台 )

现在, 我们可以不再使用传统的 MVC 框架的 Web 开发工作流, 而只需要关心前后端分离后的工作流:

  1. API 开发与测试
  2. 前端工作流( 类似于 Yeoman )

你既不需要学习传统的 MVC 中的 复杂的 form 处理流程, 也不用关心 session, cache 等在 Web3.0 不存在的问题, 只需要关注好前后端分离之后的问题即可:

  1. SEO ( 已经有服务端渲染的方案解决了: https://prerender.io/ )
  2. 用户体验 ( 因为前后端分离后网页也变的更快, 也许模拟的慢一点, 会让某些人更习惯点 )
  3. 与原生 APP 相比性能的优化

最后, 使用 AngularJS 与 Ionic, 运用同一种思想开发 APP 与网站, 这就是:

Learn Once, Use Anywhere.

搭建 AngularJS+Ionic+Cordova 开发环境并运行一个demo

目前的手机APP有三类:原生APP,WebAPP,HybridApp;HybridApp结合了前两类APP各自的优点,越来越流行。

Cordova就是一个中间件,让我们把WebAPP打包成HybridAPP,并且它提供了非常多的插件,方便我们使用原生APP的功能。

Ionic是一个界面样式库,仿照原生的ios和android界面;同时它是基于AngularJs的。

本文我们在win7中搭建 AngularJS+Ionic+Cordova 开发环境,包括所涉及的Node.js、Cordova CLI、JDK及Android SDK等。

关于Android开发环境的搭建,以及Cordova的下载使用,我们上一篇已经说明:《Cordova环境搭建 & HelloWorld》

这一篇,我们来使用 AngularJS+Ionic+Cordova 快速地做出我们第一个HybridAPP,开始吧!

开始步骤网站上有: http://ionicframework.com/getting-started/

官网css组件:http://ionicframework.com/docs/components/#header

1 安装Ionic和Cordova

官网 http://ionicframework.com/

国内 http://www.ionic.wang/

命令行安装ionic

$ npm install -g cordova ionic

2 新建一个Ionic项目

$ ionic start myApp tabs

3 运行我们刚才创建的Ionic项目

$ cd myApp
$ ionic platform add android
$ ionic build android
$ ionic emulate android
$ ionic emulate android (模拟器运行)
$ ionic run android (连接上手机运行)

首次运行虚拟机可能里边没有安装上我们的应用,可以新开一个cmd,运行:

$ adb install [APK-PATH]

然后虚拟机里边就能找到应用并打开了。

4 在浏览器预览并实时刷新

$ ionic serve

我们选择localhost,并把浏览器调成mobile模式;

然后我们进入编辑器修改项目文件夹www中的代码,看到,浏览器已经可以跟着我们的保存实时刷新,非常好用!!!

也可以使用指定IP地址来启动serve,这样方便用手机来预览:

ionic serve --address 192.168.xxx.xxx

安卓手机中导航显示在顶部的问题

http://bbs.phonegap100.com/thread-1495-1-1.html

Ionic——下一代 APP 开发框架的更多相关文章

  1. Ionic – 强大的 HTML5 Mobile App 开发框架

    Ionic 是一个强大的 HTML5 应用程序开发框架,可以帮助您使用 Web 技术,比如 HTML.CSS 和 Javascript 构建接近原生体验的移动应用程序.Ionic 主要关注外观和体验, ...

  2. Reapp - 下一代的 Hybrid App 开发框架

    Reapp 与 React Native 有着惊人的相似之处,二者都使用 React 来创建应用程序用户界面的框架.然而,在底层机制上这两个框架之间却具有明显的哲学差异.React Native 将 ...

  3. phongap、APICloud、ionic等app开发平台你都知道吗?

    大众创业热,很多人都想在互联网大展拳脚,然而大部分人却是非技术背景.针对这个行业痛点,现在国内外涌现出众多APP开发工具,开发者只要有相关的HTML5.CSS和JavaScript知识,便可以轻松快速 ...

  4. 移动APP开发框架盘点

    移动APP开发框架盘点 总体概述 现在比较流行的移动APP开发框架有以下六种:网页.混合.渐进.原生.桥接.自绘.前三种体验与Web的体验相似,后三种与原生APP的体验相似.这六种框架形式,都有自己适 ...

  5. 用于HTML5移动开发的10大移动APP开发框架【转】

    今天给大家介绍10款有关HTML5移动开发APP开发框架,这几款框架都是比较优秀的移动 Web 开发框架,能够帮助开发者更加高效的开发移动Web应用.. 十款移动APP开发框架: 1.jquery m ...

  6. 基于Html5的移动端APP开发框架

    快速增长的APP应用软件市场,以及智能手机的普及,手机应用:Native(原生)APP快速占领了APP市场,成为了APP开发的主流,但其平台的不通用性,开发成本高,多版本开发等问题,一直困扰着专业AP ...

  7. 混合APP开发框架资料汇总

    Ionic(ionicframework)一款接近原生的Html5移动App开发框架 会html css js就可以开发app,Ionic基于angualrjs框架是一个专注于开发移动wap以及app ...

  8. 十款APP开发框架

    对于大部分Web开发人员,HTML.CSS和 Java是他们最熟练的开发技能.然而,开发一个原生的移动App,对他们来说却是完全陌生的领域.因为开发Android,iOS 或 Windows Phon ...

  9. Html5必看:教你如何选择移动APP开发框架

    如何选择移动APP开发框架一直是困扰很多新手的难题,今天杭州APP开发小编就和大家一起分享一下HTML5 移动app开发过程中框架该如何选择?当然我们得先从下面几个方面来评估一个框架的优越性,然后再做 ...

随机推荐

  1. 【BZOJ 3261】最大异或和【可持久化字典树】

    题意 给出一个长度为n的整数序列,给出m个操作.操作有两种.1,Ax表示在序列结尾增加x.2,Qlrx表示找到一个位置p满足 l<=p<=r,使得a[p] xor a[p+1]xor... ...

  2. 35. Search Insert Position (Array; Divide-and-Conquer)

    Given a sorted array and a target value, return the index if the target is found. If not, return the ...

  3. 使用jquery修改表单的提交地址

    基本思路: 通过使用jquery选择器得到对应表单的jquery对象,然后使用attr方法修改对应的action 示例程序一: 默认情况下,该表单会提交到page_one.html 点击button之 ...

  4. 手动编译cloudfoundry

    1.下载cloudfoundry源代码 git clone 2.BOSH的官方定义 BOSH是一个针对大规模分布式系统的部署和生命周期管理的开源工具,其基础是"a tool of relea ...

  5. spring mabatis springmvc 看过

    .Spring中AOP的应用场景.Aop原理.好处? 答:AOP--Aspect Oriented Programming面向切面编程:用来封装横切关注点,具体可以在下面的场景中使用: Authent ...

  6. eclipse在线安装mybatis generator插件

    转自:http://blog.csdn.net/u012283609/article/details/67640433 安装步骤: 打开eclipse菜单栏help–>Eclipse Marke ...

  7. Cocos2dx之touch事件

    今天看了下ccocos2dx touch事件部分的源码,从CCTouch.CCTouchHandler和CCTouchDispatcher简单的做了分析和总结,先直接看源码吧! 1.CCTouch c ...

  8. BCompare 4重置试用天数

    BCompare安装后有30天试用期,试用结束后,你可以卸载重装,以重新获得30天试用天数. BCompare的使用天数记录保存在注册表中,如果不想每次重装,也可删除对应的注册表值来重置激活天数. 命 ...

  9. 实践作业3:白盒测试----第三次小组会DAY8

    我们小组于12月11日在东九教学楼召开了会议,小组第二次会议中就讨论了被测系统中风险最高的模块,于是选择管理员的教师添加模块,针对代码展开静态评审.这一次会议,小组主要讨论了应该从哪些方面来测评代码的 ...

  10. smarty内置函数、自定义函数

    1.把字符串里的d字母替换成h格式:{'d'|str_replace:'h':$str}; d要查找的字符 h要替换的字符 $str字符串 2.function test($param){$p1=$p ...