2016年7月

Hybrid App开发入门(一)

1、什么是Hybrid App?

介绍Hybrid App之前首先需要了解目前主流手机应用程序有哪些?

  • Native App

  • Web App

  • Hybrid App

HyBrid App开发入门

Native App 是一个原生程序,一般运行在机器操作系统上,有很强的交互,一般静态资源都是在本地的。浏览使用方便,体验度高。在实现上要么使用Objecttive-c/swift和cocoaTouch Framework撰写IOS程序,要么选择java+Android Framework撰写android应用程序,具备设备访问能力。

Web App 是生存在浏览器里的应用,所以只能运行在浏览器里,宿主是浏览器,不再是操作系统。资源一般都在网络上。本质上是一个触屏版的网站。不具备设备访问能力。

Hybrid App 是指介于web-app、native-app这两者之间的app,它虽然看上去是一个Native App,但只有一个UI WebView,里面访问的是一个Web App,但是还是运行在机器的操作系统上,交互较弱,资源一般在本地或者网络都可以。具备设备访问能力。

三者优缺点对比

应用类型优点缺点
Native App(1). 打造完美的用户体验 (2). 性能稳定 (3). 操作速度快,上手流畅 (4). 访问本地资源(通讯录,相册) (5). 设计出色的动效,转场 (6). 拥有系统级别的贴心通知或提醒 7.用户留存率高(1). 分发成本高(不同平台有不同的开发语言和界面适配) (2). 维护成本高(例如一款App已更新至V5版本, 但仍有用户在使用V2, V3, V4版本, 需要更多的开发人员维护之前的版本) (3). 更新缓慢,根据不同平台, 提交–审核–上线 等等不同的流程,需要经过的流程较复杂
Web App(1). 开发成本低 (2). 更新快 (3). 更新无需通知用户,不需要手动升级 (4). 能够跨多个平台和终端(1). 临时性的入口 (2). 无法获取系统级别的通知,提醒,动效等 (3). 用户留存率低 (4). 设计受限制诸多 (5). 体验较差
Hybrid App(1). 跨平台,一次开发,所有平台生效 (2). 快速发布,应用内更新不需要提交到AppStore (3). 开发高效成本低,通过HTML+CSS+Javascript开发应用 (4). 丰富的Device API, 通过桥接可以直接调用设备API(1). 图形和动画渲染效果较差,CPU/GPU密集类应用目前看更适合Native (2). 静态资源从服务器端加载导致的UI展示延迟问题

三者属性对比

类型WebHybridNative
开发成本
维护更新简单简单复杂
体验
应用市场认可不认可认可认可
安装不需要需要需要
跨平台
图像渲染HTML,Canvas,CSS混合本地API渲染
原生界面模仿部分原生,部分模仿原生
原生API不可调用可调用可调用
网络要求全部依赖大部分依赖支持离线

2.Hybrid App开发方案

方案一 重混合应用, 在开发原生应用的基础上,嵌入WebView但是整体的架构使用原生应用提供,一般这样的开发由Native开发人员和Web前端开发人员组成。Native开发人员会写好基本的架构以及API让Web开发人员开发界面以及大部分的渲染。保证到交互设计,以及开发都有一个比较折中的效果出来,优化得好也会有很棒的效果。 
Hybrid App技术发展的早期, Web的运行性能成为主要瓶颈!
为解决性能问题Hybrid App走向“ 重混”。

通过多WebView:实现流畅的多页加载和专场动画。

使用Navtive UI 组件:框架、菜单、日期等。

“重混”的优缺点

优点

– 提升了运行性能
– 增强了交互体验

缺点

– Web和Native技术交叉混杂
– 需要同时掌握Web和Native技术, 学习难度增加
– 一个页面有Web组件也有Native组件, 编程调试困难

方案二:轻混合应用, 使用PhoneGap、AppCan之类的中间件,以WebView作为用户界面层,以Javascript作为基本逻辑,以及和中间件通讯,再由中间件访问底层API的方式,进行应用开发。这种架构一般会非常依赖WebView层的性能。
随着时代的发展, 手机硬件、浏览器技术、无线网络技术都得到了大幅的提升,H5已经可以支持复杂应用, 并拥有良好的运行性能。使用轻混方案的App也越来越多。

目前我们要学习的Hybrid App开发就是方案二, 使用H5+Js+Native框架开发当前轻混合应用。

顺变提一下, 2012年8月, 微信公众平台的上线,重新定义了移动应用: 移动应用 = Iphone App + Android App + 微信App

3.Hybrid框架结构

HyBrid App = H5 App + Native框架

  • H5App 用来实现功能逻辑和页面渲染

  • Native框架 提供WebView和设备接口供H5调用

H5 App

简单理解就是以网页技术为主来实现的移动应用。H5 App由网页和外壳两部分组成。 网页主要负责界面的显示和交互; 而外壳会内置一个浏览器来提供网页的运行环境, 并且会通过插件为网页提供扩展的原生调用能力,如下图:
H5架构.png

H5 App简单分为:
  • 多页应用模式MPA( Multi Page Application)

MPA.png

  • 单页应用模式SPA( Single Page Application)

SPA.png

综合上图对比, H5 App页面框架的最佳选择:SPA单页应用模式!!

单页应用的核心问题: 页面隔离! 解决方案如下图所示:

图片1.png
图片2.png

Native框架:

Cordova(PhoneGap)

业界最主流的开源移动跨端框架

HTML + CSS + JS + 原生插件
开放式的原生插件框架
干净的轻混合跨端框架

 
支持公司:
company.png

Hybrid App开发所需技能一览表

  • HTML5

  • CSS3

  • JavaScript

    JavaScript基础:基本语法、面向对象等,能使用JavaScript编写程序。
    Angular : 优秀前端JS框架
    RequireJs : 模块隔离,资源按需加载
    WebPack: 模块加载器兼打包工具
    Avalon: MVVM数据绑定框架(选学)
    Node.js: 服务器端语言, 会这个就前后端统统可以搞定,瞬间成全栈工程师 
Hybrid App开发框架推荐
  • Framework7

  • Ionic


下次分享如何开发一个简单的Hybrid App:

  • Cordova使用

  • 如何使用Cordova插件访问设备接口

  • 如何将H5App打包成App