移动开发之NativeApp、WebApp、HybridApp三分天下
白羽 2018-06-26 来源 :网络 阅读 966 评论 0

摘要:本文将带你了解移动开发之NativeApp、WebApp、HybridApp三分天下,希望本文对大家学WEBAPP有所帮助。


 

目前移动互联网基本采用了NativeApp、WebApp、HybridApp三种开发模式,很难说这三种模式那种更优越,目前的情况可以说是三分天下吧,不同的开发者可以根据自己的实际情况选择不同的开发模式。谈论那种模式最好实际上事非常无聊的事情。


1、NativeApp

Native apps live on the device and are accessedthrough icons on the device home screen. Native apps are installed through anapplication store (such as Google Play or Apple’s App Store). They aredeveloped specifically for one platform, and can take full advantage of all thedevice features–they can use the camera, the GPS, the accelerometer, thecompass, the list of contacts, and so on. They can also incorporate gestures(either standard operating-system gestures or new, app-defined gestures). Andnative apps can use the device’s notification system and can work offline.

开发成本过高,跨平台性不好是开发者们选择放弃这种开发模式的重要原因。开发语音主要采用Object-C、Java等语言。由于我不是做Native端开发的,这里不多说了。

2、WebApp

 Web apps are not real apps; they are reallywebsites that, in many ways, look and feel like native applications. They arerun by a browser and typically written in HTML5.  Users first accessthem as they would access any web page: they navigate to a special URL and thenhave the option of “installing” them on their home screen by creating abookmark to that page.

HTML5技术的兴起给Web App注入了新的生机。Web App具有开发成本低、周期短、使用方便、维护简单等特点。随着HTML5被过度热炒和实际开发中遇到的性能以及体验问题,WebApp逐渐势弱。同样,以AppStore为首的App分发平台当然是不希望webapp破坏自己建立的生态系统的。html5迟迟没有得不到一个公认的标准,也阻碍着webapp的发展。但是这些都不足以阻碍webapp的发展。现在APP的数量已经达到数以百万计,实际上用户根本不需要这么多的App,很多App被用户下载后,一个月都不会被打开一次。

而webapp用户根本不需要安装,只需要打开手机浏览器,输入网址或搜索目标,点击即可到达想要的网页,基本和PC互联网的思路是一致的,这也说明百度同样在移动入口上有这很大的优势。在NativeApp上用户只有安装了App,才能浏览,而webapp是直接通过手机浏览器为入口,或者推送的信息为入口,这么看webapp在流量上是有很大的优势的。但是目前webapp得不到很好的发展主要有以下几个方面的原因:1、无有效且广泛的webapp发行渠道(NativeApp有AppStore等);2、webapp表现和体验不佳(这点算硬伤吧);3、适配难度(一套web很难兼容所有的手机,特别是国内某些自以为很牛B的手机,大可乐算一个吧,哈哈);4、配套的标准尚未成熟(主要指html5吧)。

网站移动化是必然的,目前知道webapp比较好的解决方案有如下几个:

1、云适配  号称引入一段神奇的代码就能将PC网站移动化。陈本峰老师也是我学习的榜样,html5布道官。


2、百度site App 


3、还知道个做微站的网站,号称把微信、微博入口都已打通,企业用户营销很好的平台


当然有实力的公司也有许多都有自己的移动团队,重新开发一套自己的移动端网站。


这里说的几种解决方案,开发者也得根据自己的需要去选择,还是拿58同城举例子,58同城不可能去云适配,本来PC端的网页就够乱了,这也和58同城分类信息特征有关系,如果云适配,在手机端得不到很好的展示,只会更加的乱了。

 

3、HybridApp

Hybrid apps are part native apps, part web apps. (Becauseof that, many people incorrectly call them “web apps”).  Like nativeapps, they live in an app store and can take advantage of the many devicefeatures available. Like web apps, they rely on HTML being rendered in abrowser, with the caveat that the browser is embedded within the app.


Hybrid App,这种既有跨平台开发周期短、成本低的基因,又能发挥Native App体验和性能的优势,HybridApp混合式移动应用开发逐渐成为企业移动开发的首选。Hybrid App通常是基于第三方跨平台移动应用引擎框架进行开发,在国内开发者中比较知名的有PhoneGap、Titanium和AppCan这些引擎框架一般使用HTML5和Javascript作为编程语言,调用引擎封装的底层功能如照相机、传感器、通讯录、二维码等。HTML5和Javascript只是作为一种解析语言,真正调用的都是NativeApp一样封装的底层功能,这是和Web App的最大区别和不同。因为使用了浏览器技术,所以Hybrid App通常具有跨平台的特性,并且开发成本和WebApp接近,开发效率也远高于Native App。

说实在的,从表面上看的话,很难区分一个App到底是Native App还是Hybrid App,但实际上我们更多的是把Hybrid App当做是Webapp的一部分,因为他是一部分Native(比较少),绝大部分的web页面(html5页面)。通过手机抓包工具Fiddler是可以区分一个App到底是Native App还是Hybrid App的。Hybrid App和Native App一样都是需要用户在各种App分发渠道上下载并安装到手机上才能用的。Hybrid App的体验当然是没话说,比较棒的,有这Native App的全部优点。html5很好的解决了跨平台性的问题,也解决了开发成本过高的问题。网上有估计到2016年50%+的App将是Hybrid App。譬如现在也有许多不多的代表作,如:fb、掌上百度、以及刚上市的58客户端。

One Web more  native 可以很好的形容Hybrid App这种开发模式。


作为一个有着1年多Hybrid App开发经验的屌丝攻城师来说,在这里想给Hybrid App这种开发模式泼一泼冷水,说一说开发过程中他的不足之处吧。


首先,一套web兼容n个Native是一件很难的事情,尤其是对一些App更新特别频繁的公司来说,更是苦难。Hybrid App中的js、css等静态资源的管理就是一个很头疼的问题。譬如我们1.0版本后,1.1版本html页面有修改变动,js、css资源文件就会有变动,那么我们的这些资源就得兼容以前的版本,那以前的版本要不要去加载最新版本的资源文件呢?是采用同步加载还是异步加载呢?资源加载的过程中如果加载的资源有一部分失败了呢?老版本的包升级更新到新版本资源下载原子性的问题?像这种静态资源文件需不需要内置到客户端里面呢?

当然Hybrid App作为一个新型的开发模式,谁也不能保证一开始就想清楚所有的事情,任何新兴事物都得在发展过程中,才能逐渐看清楚未来。


如果作为是完全新开发Hybrid App,关于资源问题可采用如下方案:首先,静态资源必须内置到客户端里面,包括一些重要的静态页面。这样能提高App的流畅性,在现在国内移动网络这么差的情况下,让用户去下载几十K的资源简直是灾难性的。资源都配置一个版本号,资源更新采用同步加载和异步加载并行,对于一些不影响用户功能使用的资源采用异步加载的方式实现,第一次进入页面的时候还是使用老的资源,异步去加载资源,如果资源加载完成,第二次进入的时候就使用新的资源文件。如果缺少了这个资源,功能有问题,或者样式有问题,那这些资源就要同步加载,同步加载可以放在启动客户端后加载或者加载进入页面时同步加载。还一个比较难的问题是老版本包资源更新的时候更新资源的原子性,如果某些资源加载失败了,要怎么处理?我的想法是只有资源完全加载成功后才将本地的版本号修改,标记为成功,那些失败的资源在进入引入改资源的页面或者启动客户端的时候会被再次的加载。

 


本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之WebApp频道!


本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程