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. telnet客户端模拟浏览器发送请求

    telnet 客户端 telnet客户端能够发出请求去连接服务器(模拟浏览器) 使用telnet之前,需要开启telnet客户端 1.进入控制面板 2.进入程序和功能,选择打开或关闭windows功能 ...

  2. sql查询exist替换in

    很多时候用 exists 代替 in 是一个好的选择: select num from a where num in(select num from b) 用下面的语句替换: select num f ...

  3. easyui图标大全

    .icon-blank{ background:url('icons/blank.gif') no-repeat; } .icon-add{ background:url('icons/edit_ad ...

  4. 计蒜客D2T2 蒜头君的排序(动态维护树状数组)

    蒜头君的排序(sort) 2000ms 262144K 蒜头君是一个爱思考的好孩子,这一天他学习了冒泡排序,于是他就想,把一个乱序排列通过冒泡排序排至升序需要多少次交换,这当然难不倒他,于是他想来点刺 ...

  5. scrapy定制爬虫-爬取javascript——乾颐堂

    很多网站都使用javascript...网页内容由js动态生成,一些js事件触发的页面内容变化,链接打开.甚至有些网站在没有js的情况下根本不工作,取而代之返回你一条类似"请打开浏览器js& ...

  6. 实践作业3:白盒测试----了解JunitDAY9.

    我觉得整个白盒测试过程中,最大的难点就是学习Junit和使用它进行测试.我们组安排了两个同学一起完成这部分工作.因为这个工具之前从来没有接触过,因此需要从头开始自学.找到好的教程其实可以事半功倍,我找 ...

  7. php 导出csv表格文件

    1.数据库取出数据,存放在二维数组中 $conn=new mysqli('localhost','root','root','myDBPDO'); $result=$conn->query('s ...

  8. HTML inline 与block元素

    行标签:内容撑开宽度,不可以控制宽和高,它的宽和高随标签里的内容而改变 块标签:撑满行(默认) ,可以用样式控制其宽和高 但行标签 img,textarea,select,input 是可以设置宽和高 ...

  9. WorkFlow 工作流 学习笔记

    传统ERP为制造业企业产供销人财物的管理提供了一整套优化企业资源利用,集物流.信息流.资金流为一体的现代化管理工具.但是它在过程集成和企业间集成方面存在不足.具体表现在: 1.传统ERP是一个面向功能 ...

  10. 【小梅哥SOPC学习笔记】切换NIOS II CPU的主内存后软件中需要注意的几点设置

    切换NIOS II CPU的主内存后软件中需要注意的几点设置 有时候,我们可能面对这样一种情况: 1. 我们创建一个SOPC系统,并在QSYS中设置NIOS II的复位地址和异常地址都指向SRAM: ...