Hybrid App中原生页面 VS H5页面
? ? ? ? ?转载地址:http://www.jianshu.com/p/00ff5664e000 ? ? ? ? ?作 ? ? ? 者: 小圣 Hybrid App中原生页面 VS H5页面? ? ? 现有3类主流APP,分别为:Web App、Hybrid App(混合模式移动应用,Hybrid有“混合的”意思)、 Native App(原生app,后面都用“原生app”来描述)。Web App和原生app有很多大牛们都做过比较详细的比较以及优劣势分析,我主要对Hybrid App来简要分析下,谈谈Hybrid App里原生页面和H5页面的比较和分析。 ? ? ? Hybrid APP指的是半原生半Web的混合类App。需要下载安装,看上去类似Native App,但只有很少的UI Web View,访问的内容是 Web 。 ? ? ? 现在不少app已经使用H5页面来代替原生页面(即Hybrid APP),两种方式具有不同的用户体验。刚好最近遇到公司想用H5页面来代替原生页面,了解了下,并把所有的问题以及知识点都记录下来。 原生页面和H5页面的优劣势分析 其各自的优劣势也有很多前辈都已经总结过了,我稍微记录并归纳下(本文中的相对/相比较都是针对这两种方式而言的)。 原生页面 优势: (1)运行速度比较快 (2)能使用设备的底层功能,如摄像头、方向传感器、重力传感器、拨号、GPS、语音、短信、蓝牙等 (3)在界面设计、功能模块、操作逻辑等层面相较web更易做到App的便捷性和舒适性,功能更加强大 (4)节省流量 劣势: (1)不同的操作系统(如Android和iOS)需要独立的进行开发,使用其各自的开发包、开发工具和控件 (2)每次有更新,都需要重新打包一次发布到应用平台上,且每次要向各个应用商店进行提交审核。之后用户需要手动进行点击更新安装(安装成本较高) (3)开发成本比较高,尤其需要适配各种机型时(如Android应用,需要适配各种Android手机) H5页面 优势: (1)由于是运行在浏览器上,所以只需要开发一次便可以在不同的操作系统上显示 (2)迭代版本时,不需要打包便可以发布(实时更新、快速迭代),与云端实现实时数据交互 (3)开发成本相对较低,对浏览器的适配较简单,且发布门槛相对较低 劣势: (1)每次打开页面,都得重新加载,获取数据... (2)过于依赖网络,速度无法保证。特别在弱网环境下,不仅耗费流量而且加载缓慢,就算是WiFi情况下也不容乐观 (3)只能使用有限的设备底层功能(无法使用摄像头、方向传感器、重力传感器、拨号、GPS、语音、短信、蓝牙等功能) (4)仍处于发展阶段,部分功能无法在基于现有技术的浏览器基础上实现,且无法全面的显示最完美的用户体验,只能用现有技术去弥去找最佳解决方案 如何区分Hybrid APP中的原生页面和H5页面一直在想一个问题,原生页面和H5页面到底是凭啥区分的?看了网上很多大牛是从页面的设计上来区分的。如:(1)顶部显示网页链接;(2)有加载的进度条;(3)没有底部tab导航栏;(4)顶部显示两个导航条;(5)有悬浮圆圈/标识;等可以区别出H5页面的几种方式。然而现在越来越多的应用开始弱化这些表象。【Hybrid App里面一般(1)、(2)、(4)点已经被弱化,除了微信(等..),用的还是加载进度条(微信的加载进度条简直要逼疯我的节奏,特别是网速特别慢的情况下,就眼睁睁看着他到不了尽头)】 附上微信的进度条....(已醉)
微信:加载进度条
下面,以淘宝为例,给大家看看...真的是怎么都识别不出来啊!!
淘宝:原生 vs H5
淘宝-聚划算:双入口
由上图得知,是否有悬浮圆圈/标识无法区别出H5页面
底部H5tab导航栏
由上图得知,是否有底部tab导航栏也无法区别出H5页面。 问了公司的程序员,结果还是一头雾水,只有灰溜溜的去寻求度娘的帮助,果然找到了。 设置-开发者选项-显示布局边界 H5中使用了webview控件,其作为一个控件,只有一个边界框,所以通过这一点,就比较容易区分出一个界面是webview实现的还是原生布局控件实现的,当然也不排除用一堆webview来拼成一个界面的实现方法。 如下图是一个原生与webview混排的界面,红色线框是各控件的绘制边界,中间那一大块布局丰富的界面没有显示出很多边界红色,就是H5实现的。
显示布局边界
搞定! 原生页面还是H5页面?对这两种开发模式分别进行比较,分别得出几种各自适用的场景 选择原生页面的几点理由: 1.使用定位功能 如果需要用到GPS定位功能,以前只能使用原生的API来查看用户的位置信息,但现在大多数的主流浏览器上都嵌入了W3C Geolocation API。安装了WebKit的设备或是配置了Opera或Mozilla浏览器的设备,均可以获取用户的位置信息。这在技术上已经没有太大的困难,然而却受到隐私保护条例的限制。加入定位功能,意味着给网站引入了一些敏感信息,可能会导致严重的后果。而原生app的位置信息必须经过用户授权,排除了隐患。 2.使用摄像头 如果需要用到摄像头功能,原生开发者能够简化拍照的过程,直接在客户端对照片做一些处理,只有需要的时候才上传服务器。W3C正在开发一个访问摄像头的API,但现在还没有将这部分工作正式整合到浏览器中。 3.使用感应器(方向传感器、重力传感器等) 4.访问文件系统 访问文件系统常会涉及到安全和用户隐私保护的问题。恶意应用程序可能会修改或删除你的数据。移动设备越来越私人化,在移动设备上保存了大量用户的个人信息、朋友信息及商业信息,保存在本地的数据更加安全且可以为用户提供更加有针对性的服务,这要求开发者须获得用户的授权后才能访问用户的私人数据。则原生app更容易做到这点 访问文件系统时至关重要的一点就是在没有获得用户授权的情况下,不要访问任何用户的私人数据。而这一点,往往被大多数应用忽略了。W3C正在为移动开发商开发相关的标准API,但目前该工作尚未完成。 5.提供离线服务 使用原生页面可以将数据保存在本地并进行读取,可以实现离线服务,在无网或弱网情况下,更深得用户喜爱。 选择H5页面的几点理由: 1.功能开发不完善,试运营阶段(试错成本低),快速收集用户反馈信息及时更新 2.应用须适应多个操作系统,且资源/预算有限制 3.技术强,能够极力解决由网速引起的页面不顺畅问题 4.不满足原生app条件之一,且能做到第三点的完善,并随着越来越丰富的功能接口可供开发者调用,web app比原生app更合适 5.非核心需求,在功能调整或内容的运营上很灵活 6.阶段性的营销活动,希望被分享出去 总结
|