`
前进的路中没有月亮
  • 浏览: 20432 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

H5实现APP和原生方式有多大差距,多少坑?JS才是王道!

阅读更多
纯H5的APP,虽然开发起来要比纯原生开发畅快的多,但最终效果和性能还是和原生比起来还是有很多问题,主要聚集在以下几个方面:

1、动画

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

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

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

2、获取服务端数据

首先要接受的是,这里的数据获取都是在资源页面上异步完成的,因为只有这样才能让这些资源页面完成预加载或者渲染。但是异步拿到的数据在填入页面中时可能会涉及DOM操作,众所周知,DOM操作非常消耗性能,如果页面小还好,页面稍大数据稍微复杂一点,频繁的DOM操作会导致明显的闪白。

而且最重要的一点是,如果页面加载进来之后数据更新的速度太慢,也会让页面模板等待很长时间,对用户体验又不友好,总不能每次打开都像浏览器一样等待刷新是吧。

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

3、页面切换

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

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

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

HTML5有多少坑可以分为3大点和7小点,3大点上文有详细的介绍了,下面说说7小点。

1.过分依赖网络

2.渲染性能较弱

3.页面过多

4.标签太多,代码量也不少

5.不能调用移动硬件设备的功能

6.不支持离线模式

7.消息推送不够及时

虽然H5 APP有很多缺点,但不得不承认,存在必然有其作用,正如前几年流行的混合开发模式,通过原生和H5结合也是不错的方案,比如淘宝、京东等电商类App,

HTML5 的优势在于他的排版,要做出相同效果的 Native 界面排版成本又太大,

JavaScript由于其复杂的文档对象模型(DOM)、糟糕的实现和调试工具、不一致的浏览器实现而不受开发者的待见。而随着技术的发展, JavaScript变得越来越强大、完善,比如, Ajax技术可以创建更加迷人的Web应用,Angular JS提供web应用的架构支持整个开发进程,Node.js将JavaScript的应用范围扩展到了服务器端,imag.js将JavaScript延伸到移动端,各种层出不穷的框架使得JavaScript的开发更加简捷。尤其是近几年node.js和imag.js以及react.js的发展,将 JavaScript提升到了前所未有的高度。

我们也可以看看用imag.js开发的微信页面(支持Android和iOS)
点击链接
0
0
分享到:
评论

相关推荐

    APP中实现H5定位于原生APP切换

    "APP中实现H5定位于原生APP切换" 在本文中,我们将详细介绍如何在APP中实现H5定位和原生APP切换。这个过程需要使用Java语言,并且需要使用Appium框架来实现自动化测试。 首先,我们需要在 Android Studio 中使用...

    H5唤起原生APP

    在现代的移动应用开发中,...总的来说,H5唤起原生APP是混合开发中的重要一环,它允许Web应用和原生应用之间建立桥梁,提升用户体验并实现更丰富的交互。理解并掌握这一技术,对于开发跨平台的移动解决方案至关重要。

    h5PickerView纯原生Javascript实现的移动端多级选择器插件

    《纯原生JavaScript实现的移动端多级选择器插件——h5PickerView详解》 在当前的移动互联网时代,前端开发者面临着对用户体验的极致追求,其中,轻量级且功能强大的组件库是不可或缺的工具。本文将深入探讨一款名为...

    H5与原生交互方式的需要文件

    3. **调用方向**:H5调用原生和原生调用H5两种情况都需要考虑。H5调用原生通常用于执行设备特定的功能,如访问硬件设备(摄像头、GPS等)、存储数据、推送通知等。原生调用H5则常用于更新UI、处理用户交互事件等。 ...

    H5调用百度地图原生

    然而,有时候为了实现更丰富的功能或者优化性能,我们需要将H5页面与原生应用进行交互,比如调用百度地图API。本文将详细探讨如何在H5框架中调用原生的百度地图插件,以便在网页上集成地图服务。 首先,我们需要...

    java单商户小程序商城源码+原生H5+APP源码.7z

    java单商户小程序商城源码+原生H5+APP源码+完整全套源码,可直接上线运营 Java后台+原生H5+前端uniapp(支持H5+APP+小程序) SpringBoot2+MybatisPlus+SpringSecurity+jwt+redis+Vue 前后端分离 包含运费模板、图片...

    callapplib是一个H5唤起APP的解决方案能够满足大部分唤端场景

    然而,H5在与原生APP交互时往往存在局限性,尤其是在需要唤起APP或者执行特定原生功能时。这时,"callapp-lib"这样的库就显得尤为重要。callapp-lib是一个专门设计用于解决H5唤起APP问题的开源解决方案,它旨在为...

    uni-app调用Android原生可以实现通信及打开WiFi

    【uni-app调用Android原生实现通信及打开WiFi】\n\nuni-app是一个跨平台的前端框架,允许开发者使用一套代码编写应用,同时在iOS、Android、H5等多个平台上运行。在uni-app中,通过调用原生插件,我们可以实现与...

    原生H5页面模拟APP侧滑删除效果

    在移动应用开发中,为了提供类似原生应用的交互体验,开发者经常会在H5页面中实现各种手势操作,其中就包括模拟APP中的侧滑删除效果。这个效果常见于列表项,用户滑动屏幕时,页面元素会展示出删除按钮或其他操作...

    html5唤起原生ios和安卓android app的方法

    URLscheme 是一种实现跨平台(iOS 和 Android)唤起原生应用的有效方式。它是一种特殊的 URL 格式,当用户点击该链接时,系统会尝试启动与该 scheme 相关联的应用。如果目标应用已安装,则可以直接打开;如果没有...

    h5唤醒APP,如果未下载跳转下载页,如果已下载唤醒APP

    而H5唤醒APP的功能,是实现从网页直接启动手机上的原生应用,提升用户体验的关键一环。当用户点击特定链接时,如果APP已经安装,H5页面会触发APP的启动;若APP尚未安装,则可以引导用户跳转至应用商店进行下载。这种...

    uni-app app实现web-view H5图片长按下载

    首先,`mui.min.js`是mui框架的一个轻量级库,它提供了许多增强原生移动Web App体验的组件和方法。在这个场景下,我们可以借助mui的事件监听和处理能力来模拟图片长按事件,实现下载功能。 1. **引入mui.min.js** ...

    cordova 和原生交互 调用h5页面

    9. **原生与H5交互**:Cordova提供了一套API,使得原生代码可以通过JavaScript接口与H5页面进行交互。例如,你可以使用`cordova.exec()`函数在JavaScript中调用Android的原生方法,而在原生代码中通过`cordova....

    ios-原生添加 本地H5页面.zip

    在iOS开发中,将原生应用与HTML5(H5)页面结合,可以实现丰富的交互效果,同时利用原生应用的性能优势。...通过以上步骤,你可以轻松地在iOS应用中展示和操作本地H5页面,实现原生应用与Web技术的无缝融合。

    h5页面唤起app如果没安装就跳转下载(iOS和Android)

    h5页面唤起app如果没安装就跳转下载(iOS和Android) 浏览器和app没有通信协议,所以h5不知道用户的手机释放安装了app。因此只能是h5去尝试唤起app,若不能唤起,引导用户去下载我们的app。 微信里屏蔽了 schema 协议,...

    h5app-corp-quickstart_h5_

    H5小程序通常包含页面结构、样式设计、交互逻辑等多个部分,通过Web技术实现原生App的许多功能。 二、h5app-corp-quickstart_h5_简介 "h5app-corp-quickstart_h5_"是专门为H5小程序开发设计的脚手架,它提供了一套...

    H5页面唤醒App(安卓+ios)

    在现代的移动应用开发中,H5(HTML5)页面与原生App的交互变得越来越常见,其中一种关键的交互方式就是通过H5页面唤醒已安装的App。本主题主要探讨如何实现H5页面在安卓和iOS平台上唤醒App的功能。 首先,我们需要...

    app开发之原生开发、H5开发和混合开发的区别

    缺点包括:由于Web技术本身的限制,H5移动应用不能直接访问设备硬件和离线存储,因此在体验和性能上有很大的局限性、对联网要求高、离线不能做任何操作、功能有限、APP反应速度慢、图片和动画支持性不高、用户体验感...

    H5+原生js 实现拼图游戏

    总的来说,"H5+原生js 实现拼图游戏"是一个集成了前端三大核心技术的实战项目,涉及到网页布局、动态交互、数据处理和算法实现等多个方面,对于提升前端开发者的技术能力和实践经验具有很大帮助。

    贪吃蛇是用原生js和H5canvas实现的小游戏

    贪吃蛇是一款经典的小游戏,它利用了原生JavaScript和HTML5的Canvas技术来实现。在本文中,我们将深入探讨如何使用这两种强大的工具构建贪吃蛇游戏。 首先,JavaScript(JS)是网页交互的核心,是一种轻量级的脚本...

Global site tag (gtag.js) - Google Analytics