距离上一篇《基于微信 js-sdk 的简单应用》已经快一年了,说来真是惭愧。上次不久之后便换了工作,一直处于比较忙的状态。其次后面酣畅一段时间都没有从事移动相关的工作。直到今年3月份开始,临时借调去支持其他项目组又开始接触到移动项目中去。

  今天要讲的还是hybrid , 至于原因,每每谈到移动互联网,谈到hybrid , 我总是欣喜的。犹记得2013年夏天,hybrid 概念才刚刚兴起不久,对移动互联网毫无所知的我去参加了H5工程师的实习招聘;当然最终面试没有通过,虽然在学校的项目经历,对方很认可,然而对方主要业务方向便是移动互联网;面试官认真的介绍了Native app, Web app 以及 Hybrid app 的区别和各自优缺点;瞬间点燃了我要去做移动开发的决心。

  第一阶段:诞生

  由于深受Native开发成本,迭代周期之痛和Web app 体验之殇,hybrid 一诞生便广受欢迎,迅速成名。然而当时的hybrid 大多的webview 之流 , 因此 phonegap / cordova 几乎只要听过hybrid 的人都知道, JQuery , Extjs , 也纷纷推出了移动版本的 JQ Mobile , 和 Sencha Touch ,使得Hybrid 的开发成本迅速降低,而体验有所提示。

  第二阶段:融合

  webview为主的Hybrid 解决了很多兼容性问题,提升了一定的用户体验。然后webview 在动画上有着天然的缺陷,并且提供给H5使用的端能力非常有限;既然H5实现动画非常卡顿,那为何不把动画交给Native , H5只负责每个页面中的内容。于是,一个SPA应用又被切成的多页存在于多个webview容器中。web容器来负责页面之间的切换效果,即使网络终端,容器仍然可以提供一些错误处理能力,不至于页面整体白屏,并且不可操作。第二个端能力便是上次提到类似微信jssdk 的中间层了。更原始一点我们也可以直接和Native 协商一些 scheme 协议 和回调,来直接和native 通信,然而这实际操作中会导致H5很难维护。 jssdk 实际上是指一段本地化的js文件,也叫js-bridge, 即 native 和 h5 之间通信的桥梁 。 bridge 对H5 暴露一些简单和统一的 api ,使得h5 和 Native  之间的通信变得非常简单。

  第三阶段:离线

  移动场景和PC 一个很大的不同便是网络环境,PC场景下大多是家庭宽带,办公环境等等,网速通常比较快。而移动端除了4g, 还有很多3g,2g网络,网速成为用户体验一个很大的瓶颈;离线化正式为了解决资源加载问题。通过资源离线化,可以解决首页白屏,等一系列因资源加载慢导致的用户体验问题,离线化之后对NA的要求会提高,资源包缓存更新策略,网络请求,设备,位置信息等,H5 对native 的依赖会更加明显,相对H5部分的开发则实际变得更加简单。附上糯米组件化平台化演进之路

  第四阶段:React Native

  react 和 react native 的出现甚至比Hybrid 的出现更令人惊喜和兴奋。不仅仅是新的库和工具的升级,而是开发思路和理念的升级。虚拟dom ; Learn once, write anywhere 等。都让人眼前一亮。这个阶段在手淘和其他一些公司也都有在使用了,我厂native 团队也在积极研究react native 的runtime , 争取早入集成到现有的app 当中;react native 的不同在于,完全脱离的webview 的方式, 以一种全新的方式来让前端工程师可以快速写出可比native体验的 app 。

  这仅仅是我从一个前端工程师角度所看到的hybrid这些年的一些变化,正如 Hybrid 是native + webapp 的混合产物,hybrid的发展,不仅仅是前端工程师的推动,更需要native 工程师支持。如何让那个我们的Hybrid应用能快速拆解组合,也是native 和 前端共同去做的事情。就现在来讲,手淘,糯米,手百,这些大流量app ,都在朝着平台化的方向发展,能够快速接入H5 应用,并提供相应能力;而对于H5应用,也可能同时接入到手百 和糯米的平台当中;平台需要保证高度的扩展性来满足不同H5的需求 , 而H5则需要最大化的降低自己在不同组件平台中的迁移成本。 native 和 H5 则变成了容器与内容的关系。

Hybrid app 发展历程的更多相关文章

  1. 转: 跨终端Web之Hybrid App

    转:  http://www.infoq.com/cn/articles/hybrid-app 编者按:InfoQ开设新栏目“品味书香”,精选技术书籍的精彩章节,以及分享看完书留下的思考和收获,欢迎大 ...

  2. 跨终端Web之Hybrid App

    Native App(以下简称Native)和Mobile Web(以下简称Web)二者混合开发的产物被称为Hybrid App(以下简称Hybrid).Hybrid并不是什么新概念,最早可以追溯到S ...

  3. 单纯觉得是篇好文——跨终端Web之Hybrid App

    [reference]http://www.infoq.com/cn/articles/hybrid-app#theCommentsSection 编者按:InfoQ开设新栏目“品味书香”,精选技术书 ...

  4. C#与C++的发展历程第二 - C#4.0再接再厉

    系列文章目录 1. C#与C++的发展历程第一 - 由C#3.0起 2. C#与C++的发展历程第二 - C#4.0再接再厉 开始本系列的第二篇,这篇文章中将介绍C#4.0中一些变化,如C++有类似功 ...

  5. Hybrid App技术批量制作APP应用与跨平台解决方案

    前言 简单的聊一聊我开发了4年之久的Hybrid App(混合模式移动应用)平台开发,目前一直在持续开发与维护,支持无编程快速开发! 其本意也不是要吹捧前端有多么强大,只是用自己的实际项目阐述下对于前 ...

  6. hybrid app

    hybrid app Hybrid App(混合模式移动应用)是指介于web-app.native-app这两者之间的app,兼具“Native App良好用户交互体验的优势”和“Web App跨平台 ...

  7. Native App、Web App 还是Hybrid App?

    一.什么是Native App? Native App即原生应用,即我们一般所称的客户端,是针对不同手机系统单独开发的本地应用,如需使用需要先下载到手机并安装,下载Native App的最常见方法是访 ...

  8. 【Hybrid App】Hybrid App开发实战

    [引言]近年来随着移动设备类型的变多,操作系统的变多,用户需求的增加,对于每个项目启动前,大家都会考虑到的成本,团队成员, 技术成熟度,时间,项目需求等一堆的因素.因此,开发App的方案已经变得越来越 ...

  9. Native App, Hybrid App, Web App对比

    Native App,Hybrid App和Web App简介 目前基本所有的移动互联网app可以分为三类:Native App,Hybrid App和Web App. Native App是基于智能 ...

随机推荐

  1. 关于IE打印预览内容显示不全的问题解决

    眼下在调整一个页面打印功能的时候,发现多行文本框TextArea在页面显示的时候,多行文本能够正常显示,可是在打印页面的时候.部分内容就被遮挡住了, 苦思冥想不得其解,后来还是请教了美工. 首先查了下 ...

  2. 【android自己定义控件】自己定义View属性

    1.自己定义View的属性 2.在View的构造方法中获得我们自己定义的属性 3.重写onMesure 4.重写onDraw 3这个步骤不是必须,当然了大部分情况下还是须要重写的. 1.自己定义Vie ...

  3. HDU 4380 Farmer Greedy 计算几何+bitset

    枚举直线,对于直线的某个点在直线的左端还是右端,能够状压出一个数.用bitset记录. 然后三角形就是3个bitset&一下 #include <cstdio> #include ...

  4. 高性能 TCP &amp; UDP 通信框架 HP-Socket v3.2.2 正式公布

    HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包括服务端组件.client组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#. ...

  5. CSS 初探

    Css: 指层叠样式表 (Cascading Style Sheets),它是用来进行网页风格设计的.通俗的说就是进行网页美化的,没有html依然存在,多了css 它会更好.但是没有html,css就 ...

  6. Fitnesse用系列三

    动态决策表 动态决策表是新出,版本号到今年年初还没有了.我看了看文档和演示文稿样本,其效果是作为一种辅助通用决策表.它不是easy匹配的名称和发射.但假设只有一个或两个参数.不管名字怎么都找不到,这并 ...

  7. cocos2d触摸事件处理机制(2.x和3.x变化)

    2.x的触摸事件的版本号 触摸事件处理有2种子.以下单点触摸的样本.(另一种多点触摸屏). 创建cocos2d 该项目. 1. 重写下面虚函数. bool ccTouchBegan(cocos2d:: ...

  8. JS伪3D 图形透视效果

    本文地址:http://blog.csdn.net/ei__nino/article/details/9243331 本来是想实现多个圆片的透视效果,对于运算都是测试得出的.不是严谨的数学计算. 使用 ...

  9. div 浮动框

  10. QT 4.7.6 驱动 罗技C720摄像头

    编译器: mingw32 gcc 4.8.1 mingw32 g++ 4.8.1 QT 版本: 4.8.6 OpenCV版本: 3.0.0 测试平台: win7 x64 --------------- ...