Hybrid app 发展历程
距离上一篇《基于微信 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 发展历程的更多相关文章
- 转: 跨终端Web之Hybrid App
转: http://www.infoq.com/cn/articles/hybrid-app 编者按:InfoQ开设新栏目“品味书香”,精选技术书籍的精彩章节,以及分享看完书留下的思考和收获,欢迎大 ...
- 跨终端Web之Hybrid App
Native App(以下简称Native)和Mobile Web(以下简称Web)二者混合开发的产物被称为Hybrid App(以下简称Hybrid).Hybrid并不是什么新概念,最早可以追溯到S ...
- 单纯觉得是篇好文——跨终端Web之Hybrid App
[reference]http://www.infoq.com/cn/articles/hybrid-app#theCommentsSection 编者按:InfoQ开设新栏目“品味书香”,精选技术书 ...
- C#与C++的发展历程第二 - C#4.0再接再厉
系列文章目录 1. C#与C++的发展历程第一 - 由C#3.0起 2. C#与C++的发展历程第二 - C#4.0再接再厉 开始本系列的第二篇,这篇文章中将介绍C#4.0中一些变化,如C++有类似功 ...
- Hybrid App技术批量制作APP应用与跨平台解决方案
前言 简单的聊一聊我开发了4年之久的Hybrid App(混合模式移动应用)平台开发,目前一直在持续开发与维护,支持无编程快速开发! 其本意也不是要吹捧前端有多么强大,只是用自己的实际项目阐述下对于前 ...
- hybrid app
hybrid app Hybrid App(混合模式移动应用)是指介于web-app.native-app这两者之间的app,兼具“Native App良好用户交互体验的优势”和“Web App跨平台 ...
- Native App、Web App 还是Hybrid App?
一.什么是Native App? Native App即原生应用,即我们一般所称的客户端,是针对不同手机系统单独开发的本地应用,如需使用需要先下载到手机并安装,下载Native App的最常见方法是访 ...
- 【Hybrid App】Hybrid App开发实战
[引言]近年来随着移动设备类型的变多,操作系统的变多,用户需求的增加,对于每个项目启动前,大家都会考虑到的成本,团队成员, 技术成熟度,时间,项目需求等一堆的因素.因此,开发App的方案已经变得越来越 ...
- Native App, Hybrid App, Web App对比
Native App,Hybrid App和Web App简介 目前基本所有的移动互联网app可以分为三类:Native App,Hybrid App和Web App. Native App是基于智能 ...
随机推荐
- Maven--403权限问题解决方式(求解决)
我的程序配置方案例如以下(大牛们相信你们不仅仅是一个传说): 目的:实现maven公布项目到tomcat以下.用eclipse一步到位调试. pom.xml配置: <plugin> < ...
- 教你怎么去一个APP的JSON数据,你懂的
今天闲着没事.谁让我今天是光棍节呢,算给大家一个福利.没事逛着应用市场.想找个应用高仿下,突然发现一个应用竟然跟我一个名字尼玛,尼玛应用界面做的非常easy.我认为应该不难. 惯性操作想去破解APK. ...
- 安装ecshop提示“安装数据失败”或者“创建管理员帐号”
解决方法: 在install/includes/init.php文件的顶部,<?php 下增加: date_default_timezone_set ('Asia/Shanghai'); 即可 ...
- 十分钟搞懂什么是CGI(转)
原文:CGI Made Really Easy,在翻译的过程中,我增加了一些我在学习过程中找到的更合适的资料,和自己的一些理解.不能算是严格的翻译文章,应该算是我的看这篇文章的过程的随笔吧. CGI真 ...
- .Net程序猿玩转Android开发---(7)相对布局RelativeLayout
相对布局RelativeLayout是Android布局中一个比較经常使用的控件,使用该控件能够布局出适合各种屏幕分辨率的布局,RelativeLayout採用相对位置进行 ...
- Gitclient使用
1 首次安装gitclient msysgit watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3h4NTA0NjU5OTg3/font/5a6L5L2T/ ...
- 递归算法的数据结构和算法 C++和PHP达到
递归算法:它是一种间接的方法调用本身,直接或. 实施过程:按功能或子程序完成.在函数编写代码或子程序直接或间接拥有被称为.你可以完成递归. (相同类型的问题,子问题到最小问题有已知条件,然后来求解,然 ...
- centos6.4设备hadoop-2.5.1(完全分布式)
环境介绍: 在这两种装备centos6.4(32位置)的server安装Hadoop-2.5.1分布式集群(2台机器,主要试验用.哈哈). 1.改动主机名和/etc/hosts文件 1)改动主机名(非 ...
- 如何处理 Windows Phone 8 动态砖变成黑白砖
原文:如何处理 Windows Phone 8 动态砖变成黑白砖 ? 问题的来龙去脉 我的 Windows Phone 8 动态砖变成黑白砖,所有图示和文字变成黑白,该如何处理? ? 问题的发生原因 ...
- centos7关闭防火墙(转)
直接命令:service firewalld stop 1. Disable Firewalld Service. [root@rhel-centos7-tejas-barot-linux ~]# s ...