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是基于智能 ...
随机推荐
- 关于MySQL与SQLLite的Group By排序原理的差别
当我们对一个表的记录进行group by的时候,在未明白使用sum.min.max等聚合函数的时候,group by 的排序规则,例如以下对照了MYSQL和SQLLite 大家都知道,group by ...
- Unity3d socket通信 切换到web版本时报错SecurityException解决办法
原文地址:传送门 今天苦战了一天,就跟一个Unity切换到web平台的socket通信出错苦苦纠缠了一天,问了好多大牛,但他们的回复都是我没搞过web平台下的通信或者我只专研于pc或者移动平台.看来没 ...
- 分布式消息系统Jafka入门指南之二
分布式消息系统Jafka入门指南之二 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 三.Jafka的文件夹结构 1.安装tree命令 $ sudo yu ...
- angularjs入门学习【指令篇】
一.首先我们来了解下指令API 属性 含义 restrict 申明标识符在模版中作为元素,属性,类,凝视或组合,怎样使用 priority 设置模版中相对于其它标识符的运行顺序 Template 指定 ...
- HibernateReview Day1 - Introduction
Hibernate已经学过去大概有半个月了,然后默默的忘掉了……所谓Practice makes perfect. 我尽力重新拾起来. 1.什么是ORM 在介绍Hibernate之前,我们先学习下OR ...
- RMQ之ST算法
#include <stdio.h> #include <string.h> ; int a[N]; ]; inline int min(const int &a, c ...
- Could not load file or assembly'System.Data.SQLite.dll' or one of its depedencies
[问题] 在我本机的开发环境c#连接sqlite3没有问题,但是release版本号移植到其它的机器就提示Could not load file or assembly'System.Data. ...
- 设计模式——工厂模式(Factory)
要想正确理解设计模式,首先必须明白它是为了解决什么问题而提出来的. 设计模式学习笔记 --Shulin 转载请注明出处:http://blog.csdn.net/zhshulin 1.概念 工厂模式定 ...
- MySQL 最经常使用的一千行
/* 启动MySQL */ net start mysql /* 连接和断开server */ mysql -h 住址 -P port -u username -p password /* 跳过许可认 ...
- 邮箱password复位图
blog宗旨:用图说话 辅助文字说明: 长处:用户系统完毕接口部分.界面留给业务自行设计. 缺点:邮箱发送邮件定制模板,没有完毕松耦合. 改进点:邮箱的准备发送邮件模板. 版权声明:本文博客原创文章, ...