当前位置: 首页 > news >正文

Hybrid App是如何实现网页语言与程序语言的混合?谁占主体?

【编者按】本文作者@徐珂铭,一位看好Html5的移动互联网的从业人士。喜爱玩技术,会点JAVA、HTML及CSS,有自己的想法及姑且能表达想法的文字,因此有了自己的文章。

基于HTML5的Web App在移动端接受实用性检验后,开发者从热情转为观望。这时候Hybrid App作为现阶段HTML5技术的落脚点正悄然兴起!Native App和Web App的论战加入了一个新的角色Hybrid App。

 

但究竟什么是Hybrid App?如何定义?

汽车有混合动力Hybrid,移动应用同样也有混合模式。Hybrid App(混合模式移动应用)兼具“Native App良好用户交互体验的优势”和“Web App跨平台开发的优势”。很多人不知道市场上一些主流移动应用都是基于Hybrid App的方式开发,比如国外有Facebook、国内有百度搜索等。但究竟什么是Hybrid App?如何定义?

Hybrid App:Hybrid App is a mobile application that is coded in both browser-supported language and computer language. They are available through application distribution platforms such as the Apple App Store, Google Play etc. Usually, they are downloaded from the platform to a target device, such as iPhone, Android phone or Windows Phone. The subscribers need to install to run them.

我们来拆解一下里面的含义:

1、mobile application:Hybrid App就是一个移动应用

2、both browser-supported language and computer language:同时使用网页语言与程序语言编写

3、available through application distribution platforms:通过应用商店进行分发

4、a target device:区分目标平台

5、install to run:用户需要安装使用

综合一下就是:“Hybrid App同时使用网页语言与程序语言开发,通过应用商店区分移动操作系统分发,用户需要安装使用的移动应用”。总体特性更接近Native App但是和Web App区别较大。只是因为同时使用了网页语言编码,所以开发成本和难度比Native App要小很多。因此说,Hybrid App兼具了Native App的所有优势,也兼具了Web App使用HTML5跨平台开发低成本的优势。

 

Hyrbid App为什么会兴起?

Hybrid App的兴起是现阶段移动互联网产业的一种偶然。移动互联网的热潮刮起后,众多公司前赴后继的进入。但是很快发现移动应用的开发人员太少,所以导致疯狂的人才争夺。市场机制下移动应用开发人才的待遇扶摇直上,最终变成众多企业无法负担养一个具备跨平台开发能力的专业移动应用开发团队。而HTML5的出现让Web App露出曙光,HTML5开发移动应用的跨平台和廉价优势让众多想进入移动互联网领域的公司开始心动。可是当下基于HTML5的Web App更是雾里看花,在用户入口习惯、分发渠道和应用体验这三个核心问题没解决之前,Web App也很难得以爆发。正是在这样是机缘巧合下,基于HTML5低成本跨平台开发优势又兼具Native App特质的Hybrid App技术杀入混战,并且很快吸引了众人的目光。大幅的降低了移动应用的开发成本,可以通过现有应用商店模式发行,在用户桌面形成独立入口等等这些,让Hybrid App成为解决移动应用开发困境不错的选择,也成为现阶段Web App的代言人。Hybrid App像刺客一样,在Native App和Web App混战之时,偶然间的在移动应用开发领域占有了一席之地。

 

Hybrid App是如何实现网页语言与程序语言的混合?谁占主体?

Hybrid App通常分为三种类型:多View混合型,单View混合型,Web主体型。

多View混合型:

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

单View混合型:

即在同一个View内,同时包括Native View和Web View。互相之间是覆盖(层叠)的关系。这种Hybrid App的开发成本较高,开发难度较大,但是体验较好。如百度搜索为代表的单View混合型移动应用,既可以实现充分的灵活性,又能实现较好的用户体验。

Web主体型:

即移动应用的主体是Web View,主要以网页语言编写,穿插Native功能的Hybrid App开发类型。这种类型开发的移动应用体验相对而言存在缺陷,但整体开发难度大幅降低,并且基本可以实现跨平台。Web主体型的移动应用用户体验的好坏,主要取决于底层中间件的交互与跨平台的能力。国外的appMobi、PhoneGap国内的AppCan和Rexsee都属于Web主体型移动应用中间件。其中Rexsee不支持跨平台开发。appMobi和PhoneGap除基础的底层能力更多是通过插件(Plugins)扩展的机制实现Hybrid。而AppCan除了插件机制,还提供了大量的单View混合型的接口来完善和弥补Web主体型Hybrid App体验差的问题,接近Native App的体验。

 

多View混合型,单View混合型,Web主体型优劣势对比

 

多View混合型

单View混合型

Web主体型

常见主体

Native

Native

Web

开发成本

用户体验

从分析可见,Hybrid App中的Web主体型只要能够解决用户体验差的问题,就可以变成最佳Hybrid App解决方案类型。

 

Hybrid App的瓶颈与未来

国内外Hybrid App的开发框架众多。如何选择又成为一个难题。下面对开发者比较关心的集中知名跨平台开发移动应用中间件进行列表和对比,以便选择最适合您的移动应用中间件。

 

PhoneGap是相对比较早进入公众视线的一种选择。但是,开发者简单的基于PhoneGap来开发移动应用肯定会发现结果和Web App比较差的用户体验类似。这也是为什么基于PhoneGap有实用性的移动应用主要集中在iOS上。可是PhoneGap这种现状弱化了HTML5的跨平台价值。

AppCan在技术架构上和PhoneGap类似是Web主体型中间件,但是通过结合了一些原生交互效果能够达到iOS、Android平台都比较一致的用户体验。但是相比PhoneGap的开源,AppCan相对封闭的路线显得过于谨慎。

Titanium是一种基于翻译机制的跨平台中间件,能够开发出具有Native体验的移动应用,但是因为翻译机制的限制导致移动应用开发不能像真正的HTML5开发一样灵活。哪怕一个按钮也不能像普通HTML一样来编写,而必须按照Titanium约定的特定格式。

Hybrid App这个领域虽然还处于比较初期的阶段,但是已经有很多优秀的公司和技术团队在致力于跨平台开发移动应用中间件技术的研究,给了开发者众多选择。开发者可以根据实际的项目需求来选择中间件。Web App虽被浏览器厂商和搜索引擎公司所推崇,但存在用户体验差、盈利模式不明确等现阶段无法解决的问题,或最终夭折。Hybrid App正在被越来越多的公司和开发者所认同,势必会成为新世界的王。

转载于:https://www.cnblogs.com/kenshinobiy/p/5424311.html

相关文章:

  • 推荐一个linux下的web压力测试工具神器webbench
  • Jquery(四)——动态篇
  • 怎么解决numpy和matplotlib无法安装问题
  • node.js入门篇
  • UIBezierPath画圆弧的记录
  • $translatePartialLoader加载失败及解决方式
  • shell与if相关参数
  • Java threadpool机制深入分析
  • GC — 垃圾收集算法
  • Bloglines手机伴侣支持走cmwap代理了
  • 页面每两秒刷新一次时间(java web)
  • 搭建LNMP中遇到PHP只能下载无法打开的处理
  • 为什么要用深度学习来做个性化推荐 CTR 预估
  • Win2008R2修改远程桌面端口
  • DateUtils时间的封装
  • Google 是如何开发 Web 框架的
  • 【RocksDB】TransactionDB源码分析
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • Computed property XXX was assigned to but it has no setter
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • text-decoration与color属性
  • 安卓应用性能调试和优化经验分享
  • 闭包--闭包之tab栏切换(四)
  • 初识 webpack
  • 工程优化暨babel升级小记
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 记一次用 NodeJs 实现模拟登录的思路
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 入口文件开始,分析Vue源码实现
  • 什么软件可以剪辑音乐?
  • 使用权重正则化较少模型过拟合
  • 微信支付JSAPI,实测!终极方案
  • 写代码的正确姿势
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 《码出高效》学习笔记与书中错误记录
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (C#)获取字符编码的类
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (HAL库版)freeRTOS移植STMF103
  • (转)JAVA中的堆栈
  • .libPaths()设置包加载目录
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .NET 的程序集加载上下文
  • .net 使用ajax控件后如何调用前端脚本
  • .Net 应用中使用dot trace进行性能诊断
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)
  • .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
  • .NET与 java通用的3DES加密解密方法
  • .NET中统一的存储过程调用方法(收藏)
  • ?php echo $logosrc[0];?,如何在一行中显示logo和标题?
  • @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
  • @Resource和@Autowired的区别