距离上一篇《基于微信 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. 用XAML做网页!!—边栏与页脚

    原文:用XAML做网页!!-边栏与页脚 此次我们来设计边栏和页脚,首先从页脚开始,其代码很简单: <Border x:Name="Footer" BorderBrush=&q ...

  2. jenkins 安装 SVN Publisher 后向 svn 提交代码报错: E170001: Authentication required for...

    问题描写叙述 安装并启动 jenkins 后,加入了 SVN Publisher 插件,然后在构建任务的"构建后操作"操作中加入了"Publish to Subversi ...

  3. Oracle Dataguard 介绍

    Oracle DataGuard介绍 一. DataGuard的基本原理 当某次事务处理对生产数据库中的数据作出更改时,Oracle数据库将在一个联机重做日志文件里记录此次更改.在DataGuard中 ...

  4. 自己动手写CPU之第六阶段(2)——移动操作指令实现思路

    将陆续上传本人写的新书<自己动手写CPU>(尚未出版),今天是第21篇,我尽量每周四篇 6.2 移动操作指令实现思路 6.2.1 实现思路 这6条移动操作指令能够分为两类:一类是不涉及特殊 ...

  5. WordPress更改固定链接出现404的解决方案

    很多站长在玩WordPress的时候,可能会碰到一个问题,就是想把WordPress伪静态,在后台设置好固定链接之后,就会出现文章页面或者所有的页面都出现404错误.解决方法如下: 1,.htacce ...

  6. Ansible@一个高效的配置管理工具--Ansible configure management--翻译(八)

    如无书面授权,请勿转载 第四章,大型项目中Ansible的使用 Roles If your playbooks start expanding beyond what includes can hel ...

  7. 训练赛 Grouping(强连通分量缩点 + DAG求最长路)

    http://acm.sdut.edu.cn:8080/vjudge/contest/view.action?cid=158#problem/F 大致题意:给出n个人和m种关系(ti,si),表示ti ...

  8. css 实现table 隔行变色

    <html> <head> <title>Member List</title> <style> <!-- .datalist{ bo ...

  9. HDU 4149 Magic Potion

    意甲冠军: a[i] ^ x = f[i] ( i = 1...8 ) 和 ( a[1] + a[2] + ... + a[8] ) ^ x = f[9] 如今f为已知  求x 思路: 从低位到高位确 ...

  10. 【Android开发经验】使用反射,得到的类的字段、方法、并实现了简单的调用

    本文后推出Android的ICO框架做准备,所以,假设你想要一个最近的一项研究Android的ICO学生框架.你可以稍微看一下. 首先,简介一下Java里面的反射. JAVA反射机制是在执行状态中,对 ...