H5开发的web APP和原生APP的区别有以下几个方面:

一、开发方面

原生App

⊙ 每一种移动操作系统都需要独立的开发项目

⊙ 每种平台都需要独立的开发语言。Java(Android), Objective-C(iOS)以及Visual C++(Windows Mobile)等等

⊙ 需要使用各自的软件开发包,开发工具以及各自的控件

移动Web App

⊙ 因为运行在移动设备的浏览器上,所以只需要一个开发项目

⊙ 这种应用可以使用HTML5,CSS3以及JavaScript以及服务器端语言来完成(PHP,Ruby on Rails,Python)

⊙ 这里可没有标准的SDK,基本任意选择别忘了有一些跨平台的开发工具,比如PhoneGap, Sencha Touch 2,APPcan以及Appcelerator Titanium等等。

二、能力方面

原生App

⊙ 能够与移动硬件设备的底层功能,比如个人信息,摄像头以及重力加速器等等

移动Web App

⊙ 只能使用有限的移动硬件设备功能。

三、获取方法

原生App

⊙ 直接下载到设备

⊙ 以独立的应用程序运行(并不需要浏览器)

⊙ 用户必须手动去下载并安装这些原生App

⊙ 有一些商店与卖场来帮助用户寻找你的App,目前app市场不计其数

移动Web App

⊙ 从移动设备上的浏览器访问

⊙ 不需要安装额外的软件

⊙ 软件更新只需要服务器就够了

⊙ 因为现在没有什么商品或卖场提供这种App,所以如何搜索这些移动Web App相当不简单。

四、版本控制

原生App

⊙ 用户可以自由地选择是否更新软件版本,所以会出现不同用户同时使用不同版本的情况

移动Web App

⊙ 所有的用户都是用同样的版本

五、优势

原生App

⊙ 比移动Web App运行快

⊙ 一些商店与卖场会帮助用户寻找原生App

⊙ 官方卖场的应用审核流程会保证让用户得到高质量以及安全的App

⊙ 官方会发布很多开发工具或者人工支持来帮助你的开发

移动Web App

⊙ 跨平台开发

⊙ 用户不需要去卖场来下载安装App

⊙ 任何时候都可以发布App,因为根本不需要官方卖场的审核

⊙ 如果你已经有了一个Web App,你可以使用 responsive web design来辅助改进

六、缺陷

原生App

⊙ 开发成本高,尤其是当需要多种移动设备来测试时

⊙ 因为是不同的开发语言,所以开发,维护成本也高

⊙ 因为用户使用的App版本不同,所以你维护起来很困难

⊙ 官方卖场审核流程复杂且慢,会严重影响你的发布进程

移动Web App

⊙ 无法使用很多移动硬件设备的独特功能

⊙ 要同时支持多种移动设备的浏览器让开发维护的成本也不低

⊙ 如果用户使用更多的新型浏览器,那问题就更不好处理了

⊙ 对于用户来说,这种App很难被用户发现

1、动画

  动画有很多种,比如侧边栏菜单的滑入滑出、元素的响应动画、页面切换之间的过场等等,在H5之下的众多实现方法都没有办法达到纯原生的性能。一般这些的话有几种不同的选择:css3动画、javascript动画、原生动画。

css3动画非常的消耗性能,如果某一个元素用到css3动画可能还看不出来,但大面积或过场使用css3动画会让app低端手机体验非常差。最好的选择一般是通过框架调用底层的动画,但不管怎么样等于在原来的代码上包上了一层,性能还是不可避免的受到影响。

  比如在一个新页面的载入上,如果调用底层动画要考虑的问题有两个,一个是本身资源页面的渲染问题,另一个是远程数据的获取。即便是这些动画能够很快的响应,但大量的css页面会导致渲染卡顿,滑入时可能会有白屏/机器卡顿的现象。为了解决这些性能问题又必须要用到预加载或模拟动画。即便是这样,滑入滑出的动画在低端的安卓机器上还是有很多问题,如果获取服务端数据处理的方式不合适,卡顿白屏的现象会更严重。具体看下面的数据获取方式。

2、获取服务端数据

  首先要接受的是,这里的数据获取都是在资源页面上异步完成的,因为只有这样才能让这些资源页面完成预加载或者渲染。但是异步拿到的数据在填入页面中时可能会涉及DOM操作,众所周知,DOM操作非常消耗性能,如果页面小还好,页面稍大数据稍微复杂一点,频繁的DOM操作会导致明显的闪白。而且最重要的一点是,如果页面加载进来之后数据更新的速度太慢,也会让页面模板等待很长时间,对用户体验又不友好,总不能每次打开都像浏览器一样等待刷新是吧。

  这个问题如果没有得到解决,H5APP是很难承担大规模数据的页面,在它们之中频繁切换更是难上加难,那么肯定有人也会想到用MVVM的方式,其实我也写过一些基于MVVM的H5APP,相对来说它们获取数据和更新数据的方式更敏捷更科学,但写的过程中又要注意很多H5独有的问题,这些问题在下面的页面切换里来讲。

3、页面切换

  上面我们看到了几种不错的实现方式,比如预加载和模拟动画,甚至有批量的预加载,批量的截图模拟动画等等,虽然看起来很友好解决了不少问题,但事实上如果页面足够多就会引发另一个问题——页面的生存周期。

  试想一下,如果引导页或者主页面缓存了5个子页面的资源,在跳转到响应的子页面时又会缓存这些子页面的下级页面资源,如此反复肯定会占据大量内存使APP的体验下降。那么怎么知道那些页面是需要的,最多缓存多少页面,什么时候结束哪些页面的生存周期呢?在我用过的很多H5APP的框架里都没有对这些问题有一个完美的解答,因此在页面较多内容较多的APP中可能会因这些资源分配的问题降低性能。

  这时候我们回过头来再看看MVVM的数据加载问题,实际上不管哪个MVVM框架,写过的人都知道管理这种新型的前端代码最重要的问题是内存的问题,你既要保证代码写的足够优雅没有任何内存泄露问题,也要考虑到在页面生存周期结束时它们的控制器/页面资源是否得到释放,这对全局有没有什么影响,在多个请求时也要合理的分配资源,甚至是复用这些父级页面传过来的缓存资源等等。较小的APP可能并不会有这些问题,如果你想用纯H5来开发大型APP,这很可能会浪费你很多时间——而且结果还不会让你满意。

4、Android/iOS的区别

  很多人都说纯H5APP一次编写就能编译Android/iOS两种不同的APP,大大降低了成本。实际上这个观点本身就是值得怀疑的,如果你写过这类APP就能明白我在说什么,它们既不省事,又存在很多BUG,调试时尤其繁琐。举一个很简单的例子,Android和iOS在返回上一页的处理方式上就有明显的区别,iOS的顶部bar在全屏下怎样处理,Android机器出现smart bar怎样处理页面的布局,调用底层硬件时怎样区分不同的场景等等,你需要写一个又一个机型和系统的判断,然后分别在Android和iOS下调试,最后你却发现这并没有卵用,累的要死却什么没学到,只有一堆不知道什么时候会过时的经验。

  现在做H5混合APP开发的人很多,但是纯H5却很年轻,很多问题都没有很好的解决,这几个是我在做这些APP时考虑最多的问题。当然大家也不必担心,随着ES6的推行,硬件发展越来越快,纯H5APP未必没有一席之地。最后说一个很少人注意到的H5优势,大家大谈H5APP时都是快速开发、低成本、多平台等等,但我却觉得它和很多APP开发方式相比有一个不同之处——图文混合的排版。正是这些复杂多变的CSS样式消耗了性能,但是它带来了排版的多样性,能够细致到每一个字宽行高和风格的像素级处理,才是H5的优异之处。

h5做app和原生app有什么区别相关推荐

  1. h5做的app和原生app的区别

    之所以说h5做的app和原生app的区别,是因为一位博友的问题: 随着 h5 的普及,是不是不再需要开发 app ? 我的回答是要分业务需求,分场合而定. 比如现在的微信小程序这么流行,甚至也取代了不 ...

  2. h5做app和原生app有什么区别?

    H5开发的web APP和原生APP的区别有以下几个方面: 一.开发方面 原生App ⊙ 每一种移动操作系统都需要独立的开发项目 ⊙ 每种平台都需要独立的开发语言.Java(Android), Obj ...

  3. H5开发的web APP和原生APP的区别

    H5开发的web APP和原生APP的区别有以下几个方面:一.开发方面 原生App ⊙ 每一种移动操作系统都需要独立的开发项目⊙ 每种平台都需要独立的开发语言.Java(Android), Objec ...

  4. vue h5 页面调起原生APP指定页面

    这次分享可能比较适合小白,大神们多多指教哈!为什么这么说呢,因为我之前都是做pc,或者小程序.rn 什么的,原生app内嵌h5这种还是第一次. 最近提了个需求:app下载页 如果当前应用已经安装就直接 ...

  5. vue做混合式app_Vue+原生App混合开发手记#1

    项目的大致需求就是做一个App,里面集成各种功能供用户使用,其中涉及到很多Vue的使用方法,单独总结太麻烦,所以通过这几篇笔记来梳理一下.原型图如下: 路由配置 主界面会用到一些原生App方法,比如验 ...

  6. H5 App和原生App

    Web App 原生APP 能力方面的区别 获取方法的区别

  7. 你的app是由旧版打造_「软件测试基础知识」Web APP和原生 APP的不同

    原生APP访问和兼容的能力也比较好,可以支持在线或者离线消息推送或是进行本地资源访问,以及摄像.拨号.蓝牙.功能的调取.原生APP开发有许多的优势,如原生APP是针对不同的平台为用户提供不同的体验.节 ...

  8. php原生好还是tp好_webapp/H5封装,混开APP,没有原生APP好?事实是这样的吗?

    混开APP没有原生APP好?事实是这样的吗?很多人要混淆概念,伊凡今天用通俗易懂的话让大家明白其中奥妙. 一.H5app(也叫H5封装)H5APP你可以理解成我是一个手机网页,以前的手机版网页叫做wa ...

  9. Hybrid App中原生页面 VS H5页面(分享)

    本文部分转自  http://www.jianshu.com/p/00ff5664e000 现有3类主流APP,分别为:Web App.Hybrid App(混合模式移动应用,Hybrid有" ...

最新文章

  1. 谈谈最近独立做项目的一些事情,一些小经验,分享之!
  2. windows下sqlite3的基本操作
  3. python教程书籍推荐-推荐几本对于Python初学者比较好的书籍(内含PDF)
  4. 【Linux基础】 diff命令的参数详解和实例
  5. CodeForces - 1457E New Game Plus!(贪心)
  6. SAP CRM WebClient UI on new focus工作原理
  7. windows脚本命令闪退_NCL2Python|windows系统安装Pyngl和Pynio
  8. Oracle教程之SGA_MAX_SIZE参数
  9. 程序员的必杀技——编程全能词典
  10. 强化学习进阶【逆强化学习】
  11. 笔记篇二:鸢尾花数据集分类
  12. C语言枚举进程,实现一个简单的内存补丁
  13. 如何快速win10下安装win7双系统
  14. 2008年9月23号,星期二,晴。博观而约取,厚积而薄发。(苏轼)
  15. 大数据处理中心什么意思_什么是数据处理中心或数据中心
  16. Python语言程序设计课程论文--飞机大战
  17. LintCode 两个数组的交集
  18. ZZULIOJ1096-1100Python解法
  19. 新版qq虚拟摄像头颜色不正常_分享 | 在线教学常见问题QQ直播、视频通话、群课堂...
  20. vue + element 表格数据导出为excel表格

热门文章

  1. 常用时序数据地址 MTGNN
  2. pngimg 可以商用吗_推荐几个个人收藏的外国高清、免费、无版权可商用的网站...
  3. markdown语法转换成html,使用Showdown来把markdown语法转化成html
  4. Python上位机与C51单片机串口通信
  5. (load和initialize)不要被你的log迷惑了你对问题的判断
  6. 基于领域模型的微服务划分--实战案例解析
  7. 用户邀请码的生成方法
  8. 参数validator/valid校验用法(通俗)
  9. PyTorch非线性函数拟合
  10. 【noiOJ】p7939