Hybrid App 发展史

目录

  • 1 概述
  • 2 Cordova 平台
  • 3 Web 发展史
    • 3.1 静态网页
    • 3.2 动态网页
    • 3.3 客户端异步交互
    • 3.4 开发效率提速阶段
    • 3.5 移动平台
  • 4 Hybrid App 分类一
    • 4.1 多View混合型
    • 4.2 单View混合型
    • 4.3 Web主体型
    • 4.4 多主体共存型(灵活型)
  • 5 Hybrid App 分类二
    • 5.1 重架构混合模式
    • 5.2 轻架构混合模式
    • 5.3 Hybrid 优势
    • 5.4 Hybrid 劣势
  • 6 Hybrid 平台调查
  • 7 Hybrid App 调试方法
    • 7.1 调试方法汇总
    • 7.2 推荐工作流程 & 调试方法

1 概述

回顾历史,展望未来。认真分析 Hybrid 的诞生原因、发展经历、才能更好的预测 Hybrid 开发的未来前景。

问题 产生 技术,无法解决问题的技术是不存在的。

提到 Hybrid 开发,必然要提到 Web,首先让我们看一看Web发展史。

  • 静态网页:展示内容。

  • 动态网页:支持页面与服务器交互,构建了现在蓬勃发展的互联网的基础。

  • 客户端异步交互:解决了整个页面刷新的问题,优化了用户体验。

  • 开发效率提速阶段:各种功能丰富的第三方JS库迅速崛起,提高工作效率。

  • 移动平台:智能手机飞速发展,需要快速构建App,满足市场需求,Hybrid作为一种解决方案应运而生。

  • Hybrid分类
    Hybrid时间点从2012年开始,陆续出现了三种Hybrid模式 : 多View混合型、单View混合型、Web主体性;按照另一种分类方式分为 : 重架构混合模式、轻架构混合模式。
    其中,多View混合型、单View混合型属于重架构混合模式,Web主体性属于轻架构混合模式。
    当前,最流行的是Web主体性。

  • Hybrid优势

  • 跨平台、快速发布、高效开发。

  • Hybrid劣势

  • 达不到原生平台的流畅体验。


2 Cordova 平台

当前所有的Hybrid框架都是基于Cordova平台进行JS跟原生通讯。
因此Cordova平台支持的调试方式也是通用的。

ProjectName
┣ config.xml **Cordova项目配置文件**
┣ merges **针对ios、android等平台的html文件**
┣ hooks **Cordova CLI使用的项目自定义脚本**
┣ platforms
┃ ┣ android **android开发人员工作目录**
┃ ┗ ios **iOS开发人员工作目录**
┣ plugins **插件源码目录**
┗ www **H5开发人员工作目录**
  • React Native、Weex : 即保留了Hybrid应用的优势,力图解决 Hybrid 劣势

3 Web 发展史


3.1 静态网页

  • 问题

内容分享

  • 技术

  • Html

  • 年 : 1995

  • CSS

  • 年 : 1996

  • Javascript

  • 年 : 1996

  • 问题 : 客户端脚本语言


3.2 动态网页

  • 问题

动态网页问题

  • 技术
  • CGI(共用网关接口)
  • Perl
  • 年 : 1987
  • 问题 : 服务器端动态网页
  • PHP
  • 年 : 1995
  • 问题 : 服务器端动态网页
  • JSP
  • 年 : 1996
  • 问题 : 服务器端动态网页
  • ASP
  • 年 : 1996
  • 问题 : 服务器端动态网页

3.3 客户端异步交互

  • 问题

客户端交互->异步、局部页面交互

  • 技术
  • Ajax
  • 年 : 1998—2005

3.4 开发效率提速阶段

  • 问题

加快开发效率

  • 技术
  • jQuery
  • 年 : 2006
  • 问题 : JS库、浏览器的兼容性、简化dom操作,加快开发效率
  • YUI
  • 2006
  • 问题 :
  • Ruby on Rails
  • 年 : 2007
  • 问题 : 开发模式->MVC
  • NodeJS
  • 年 : 2009
  • 问题 : 待定
  • Prototypejs
  • 年 : 2009
  • 问题 : 待定
  • UnderScore
  • 年 : 2009
  • 问题 : 待定
  • AngularJS
  • 年 : 2009
  • 问题 : 谷歌 JS 前端框架
  • CoffeeScript
  • 年 : 2009-2010
  • 问题 : 作为JavaScript的转译语言
  • Backbone
  • 年 : 2010
  • 问题 : JS 前端框架
  • Web2.0 Html5
  • 年 : 2010
  • 问题 : 待定
  • EmberJS
  • 年 : 2011
  • 问题 : 待定
  • Bootstrap
  • 年 : 2011
  • 问题 : 待定
  • TypeScript
  • 年 : 2012
  • 问题 : 待定
  • React
  • 年 : 2013
  • 问题 : 构建随着时间数据不断变化的大规模应用程序
  • Vue
  • 年 : 2013
  • 问题 : 待定

3.5 移动平台

  • 问题

移动平台

  • 技术

  • Web App

  • 年 : 待定

  • 问题 : Html5移动App开发框架

  • 技术

  • JQuery Mobile

  • 轻量级框架

  • 缺点

  • 没有 MVC 多人协作 开发的概念

  • 项目比较大后 代码不易维护

  • 适用范围

  • 中小项目 1-2 个人开发很适用

  • SenchaTouch

  • 重量级的框架(需要 extjs 基础 代码复杂需要较强的程序基础)

  • 优点

  • 兼容性好,基于 MVC 世界上第一个 html5 移动开发框架

  • 可视化开发工具 sencha architect

  • Angularjs

  • 轻量级框架

  • 优点

  • 支持 MVC

  • 支持 数据双向绑定

  • 通过 SASS 构建应用程序,它提供了很多 UI 组件来帮助开发者开发强大的应用

  • Hybrid App

  • 年 : 2008-2011

  • 问题 : 解决 html 无法访问设备的问题

  • React Native

  • 年 : 2015

  • 问题 : 既拥有Native的用户体验、又保留React的开发效率

  • Weex

  • 年 : 2016


4 Hybrid App 分类一


4.1 多View混合型

  • 描述

2012年常见的Hybrid App是Native View与WebView交替的场景出现。这种应用混合逻辑相对简单。
即在需要的时候,将WebView当成一个独立的View(Activity)运行起来,在WebView内完成相关的展示操作。开发难度和Native App基本相当。

  • 特点

即Native View和Web View独立展示,交替出现。
这种移动应用主体通常是Native App,Web技术只是起到补充作用。

  • 开发难度

开发难度与native app相当


4.2 单View混合型

  • 描述

这种Hybrid App的开发成本较高,开发难度较大,但是体验较好。
如百度搜索为代表的单View混合型移动应用,既可以实现充分的灵活性,又能实现较好的用户体验。

  • 特点

即在同一个View内,同时包括Native View和Web View。互相之间是覆盖(层叠)的关系。(会牺牲内存,达到显示快的效果)

  • 开发难度

开发成本较高,难度较大,但是体验较好。


4.3 Web主体型

  • 描述

这种类型开发的移动应用体验相对而言存在缺陷,但整体开发难度大幅降低,并且基本可以实现跨平台。Web主体型的移动应用用户体验的好坏,主要取决于底层中间件的交互与跨平台的能力。
从分析可见,Hybrid App中的Web主体型只要能够解决用户体验差的问题,就可以变成最佳Hybrid App解决方案类型。

  • 特点

即移动应用的主体是Web View,主要以网页语言编写,穿插Native功能的Hybrid App开发类型。

  • 开发难度

整体开发难度低,基本可以实现跨平台

  • 平台
  • appMobi : 除基础的底层能力更多是通过插件(Plugins)扩展的机制实现Hybrid
  • PhoneGap : 除基础的底层能力更多是通过插件(Plugins)扩展的机制实现Hybrid
  • WeX5 : WeX5则在揉合PhoneGap和Bootstrap等主流技术的基础上,对性能进一步做了深度优化,不但完全具备Native App对本地资源的调用能力,性能体验也不输原生;WeX5所开发出来的app具备完全的跨端运行能力,可以无需任何修改直接运行在各种前端环境上。
  • AppCan : 除了插件机制,还提供了大量的单View混合型的接口来完善和弥补Web主体型Hybrid App体验差的问题,接近Native App的体验。

4.4 多主体共存型(灵活型)

  • 描述

这是一种新型的开发模式,即支持Web主体型的应用,又支持以Native主体的应用,也支持两者混合的开发模式。

  • 平台
  • kerkee : 它具有跨平台、用户体验好、性能高、扩展性好、灵活性强、易维护、规范化、具有Debug环境、彻底解决跨域问题等特点。用户体验与Native App媲美。功能方面,开发者可随意扩展接口。

5 Hybrid App 分类二


5.1 重架构混合模式

  • 原因

“重混”架构这种依赖Native UI的混合框架,本着“Web不够,就Native来凑”的核心思路,的确提升了交互体验,但同时也带来了无法回避的显著缺点:Web和Native技术的交叉混杂让开发者的编程和调试都很不方便;尤其是无法直接运行在微信这类超级App平台之上,更是“重混”App的致命硬伤。


5.2 轻架构混合模式

  • 原因

Hybrid APP就必须坚持几个原则:UI部分必须用纯Web技术,完全采用H5技术;在底层的设备接口上,确实是JS无法完成的原生部分,需要Native技术来弥补的,也必须坚持Native技术不去侵入UI。这样一个框架就是“轻混”Hybrid APP框架。“轻混”框架才是真正的HTML5 APP框架,在技术上更轻量,成本更低、也更容易推广,能真正做到只需一次开发就能跨Android、iOS和微信等各种端发布。“轻混”才是Hybrid APP技术发展的必然方向。


5.3 Hybrid 优势

  • 跨平台
    Web内容可以做到开发一次,所有平台生效,诸多产品需要这种能力。

  • 快速发布
    iOS平台,Apple Store平均审核周期1~2周不等,甚至更长,产品的发布周期从2周到1月,这对需要快速发布的产品而言难以接受。

Android平台,应用商店众多,发布过程烦琐。虽然可以应用内升级,但是带来的问题是新App需要通过应用商店,此外APK体积庞大,2G/3G环境下体验差。

  • 高效开发
    Web开发经过20年的发展,已经将结构(HTML)、表现(CSS)、行为(JavaScript)3部分很好地分离开,在分工协作、开发效率上会具明显优势。

  • 丰富的Device API
    Web(HTML5)强调通用性,受限于标准和浏览器实现,许多有用的系统功能未能得到支持(或部分支持)。而Native最大的优势在于设备API的调用能力,只要桥接Native和Web,Web也就能够拥有这种能力。


5.4 Hybrid 劣势

  • CPU/GPU密集类应用目前看更适合Native,例如极品飞车这样的游戏。这种劣势是在不断弱化的,正如 “CSS Transform 3D”引入GPU大大缓解了Web动画不流畅的问题。

  • 静态资源从服务器端加载导致的UI展示延迟问题。这个问题可以通过Native拦截WebView通信加载已打包的公共库来缓解。


6 Hybrid 平台调查

平台 时间 Native端 JS端 特点 归属 优点 iOS版本 android版本
PhoneGap 2008-2011/7 Cordova jQuery Mobile 国外
Ionic 2013 Cordova AngularJS 国外 >=iOS7 >=Android4.1
WeX5 2014 Cordova Knockoutjs(MVVM)、requirejs、bootstrap、jquery等 国内
APICloud 2016前 Cordova JS前端文档 APICloud推行“云端一体”的理念,重新定义了移动应用开发。
APICloud为开发者从“云”和“端”两个方向提供API,简化移动应用开发技术,让移动应用的开发周期从一个月缩短到7天。
APICloud由“云API”和“端API”两部分组成,可以帮助开发者快速实现移动应用的开发、测试、发布、管理和运营的全生命周期管理
国内 SuperWebview比基础的webview或phonegap拥有更丰富的功能,支持用HTML5开发具有原生UI和UE体验的界面、同时支持调用二维码等系统功能,并且能很好的把蓝牙、WiFi和智能硬件相连接。
ExMobi 2014 Cordova 国内(烽火星空)
AppCan 2010 Cordova 国内(正益无线)
Titanium 2009-2012 Cordova 国外(Appcelerator)
NativeScript 2006 Cordova 国外(telerik)
Kinvey 2011 Cordova 国外
Kerkee 2015 待定(等待发展) 国内
React-canvas 2015 基于Canvas的UI框,预取代Html标签绘制界面。技术对比文章 国外
Pastry ---- Cordova backbone(MVVM)、requirejs、bootstrap、jquery等 --
平台 时间 Native端 JS端 特点
React Native 2015 国外
Weex 2016 国内 -

7 Hybrid App 调试方法


7.1 调试方法汇总

开发阶段 调试方法 应用场景 设备依赖 设备支持 无线支持 JS调试 编译打包 加密网络请求 优点 缺点
UI开发阶段 mockdata 开发H5端UI界面,UI界面显示模拟数据,非网络请求真实数据。 - web - - ×
整个开发阶段 console.log() 将H5日志输出到浏览器、原生端输出窗口、iOS真机日志文件。 - web
iOS真机/模拟器
android真机/模拟器
- - - 依赖开发人员打印日志的完整性
原生联调阶段 Ripple仿真 业务开发严重依赖 Cordova API 的测试 ripple-emulator npm包 教程 web - × × - 不依赖真机,模拟出真机的API接口 可以使用基于 Safari、Chrome 的调试方法代替
原生联调阶段 Weinre 调试JS业务逻辑,监听实时变量 Weinre npm包 教程 web
iOS真机/模拟器
android真机/模拟器

1 weinre这类调试工具仍属于插件性质,诸如“网络”、“本地资源”等高级调试功能无法支持
2 需要额外添加代码
- PhoneGap Developer App 与 PhoneGap Desktop App 配合使用
或者使用 phonegap serve 命令
PhoneGap Developer App 手机软件 按照教程 iOS真机/模拟器
android真机/模拟器
× × × 1 无须配置任何iOS、android、nodejs环境
2 支持 console 输出到 PhoneGap Desktop App 终端
1 严重依赖phoneGap的cordova API
2 热加载效率低
3 不能使用自定义的cordova插件
- PhoneGap Desktop App 用于给 Cordova 项目开启 serve 命令
与 PhoneGap Developer App 配合使用
PhoneGapDesktop客户端软件包 安装教程 - - - - - 见 PhoneGap Developer App 优点 1 只是作为 phonegap serve的客户端
2 热加载效率低
原生联调阶段 基于 Safari 的调试 适用 Weinre 应用场景 safari 教程 iOS真机/模拟器 真机不支持 依赖 Mac、XCode 环境
原生联调阶段 基于 Chrome 的调试 适用 Weinre 应用场景 chrome 教程 android真机/模拟器 真机不支持 依赖 Android Studio 环境
原生联调阶段 GapDebug 适用 Weinre 应用场景 GapDebug软件包下载 iOS真机
android真机
模拟器待定
× 不依赖app的开发环境 依赖 console.log() 查看日志

更多介绍参考 Debugging Cordova apps


7.2 推荐工作流程 & 调试方法

  • 推荐工作流程

  • 完成UI界面开发 -> 完成原生联调

  • 推荐调试方法

  • mockdata & console.log() -> GapDebug -> 基于Safari、Chrome方法 -> Weinre

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,498评论 25 707
  • 转自 Hybrid App 转至 2016年5月24日 By Paul 简介“云”时代的来临正在改变App和运...
    ZMJun阅读 1,357评论 1 7
  • 目录 1.Hybrid App 2.PhoneGap 3.Cordova 4.SPA (单页应用程序) 5.Ang...
    洛月山庄阅读 372评论 0 0
  • 小时候,在外婆家最喜欢的是冬天下的雪。每次一到下雪,我就趴在窗台上看,看大雪纷纷飘落的瞬间,飞飞杨扬的像鹅毛般轻盈...
    miracle52085阅读 166评论 1 0
  • 141 教育就是一颗树摇动另一棵树,一朵云推动另一朵云,一个灵魂召唤另一个灵魂。 ...
    穆辰曦阅读 499评论 0 1