本地H5模式写的APP体验可以比APP还好
很多APP使用H5编写,但APP链接的是远程的url的模式,导致了APP的用户体验极差,因为当你使用远程的H5 url的时候,打开H5页面的速度由网络决定,而不是由手机性能决定,假如用户在没有网络的地方打开APP,甚至出现迟迟打不开APP界面,出现白色空白页的情况,造成用户一直在等待。
其实APP使用H5,不应该使用远程的H5 url,而是应该使用file://本地路径的方法打开本地的H5页面,而不是使用http://远程路径的方式打开H5页面,这样APP的打开速度就可以跟原生相比,因为这样打开速度就不会跟网络速度相关,速度可以跟原生一样秒开。而且界面打开后,加载数据的时候使用ajax异步加载,先让界面出现,提示用户等待,而不使用同步加载,这也是提高H5体验的关键。这样APP界面的打开速度就跟手机的性能相关,而不是跟网络速度相关。
为什么我说用H5开发的APP体验可以比APP还好呢?因为这来自于成熟的CSS标准和成熟的js Ui框架技术,因为一种很炫的界面,使用css实现起来非常简单,甚至可以下载到非常炫的css样式,假如使用原生自己来编写同样的UI,实现起来可能会非常麻烦。因此,目前很多公司使用本地H5来渲染界面做出来的界面,反而非常好看,但却因为使用了错误的远程URL模式却又影响了用户体验。
本地H5模式+H5热更新+支持ajax跨域,才是使用H5的最佳解决方案。为什么要跨域呢?因为我们打开本地H5的时候使用的是file://本地路径的方法打开的,因此假如我们使用http或https访问外部api的时候,是需要跨域支持的。幸运的是,安卓的webview和ios的UIwebview组件是可以设置支持跨域的。不过假如自己打包APP,要实现所有这些,还要兼容所有手机,也是门槛比较高的,甚至比开发原生APP的门槛还高。因此,为了用户体验,还是需要使用专业的打包工具进行打包,还是不要自己去打包H5 app。
使用什么工具打包呢?可以使用hbuilder进行打包,但是hbuilder不能实现自动的热更新。在这里我推荐一个非常优秀的在线打包本地H5的工具,我使用过,非常好用。
https://www.yunedit.com
这个工具能打包本地H5模式的app,还能在后台热更新H5代码,还能支持跨域访问ajax,还有yeui js框架调用原生功能。
总结下,其实用H5开发体验不好,还是因为程序员水平的问题,APP打包工程师的水平问题,导致了无论前端H5工程师写的代码无论多出色,最后都因为网络问题使得APP体验极差。因此使用专业的打包工具或打包平台打包,还是非常有必要的。
本地H5模式写的APP体验可以比APP还好的更多相关文章
- 最接近原生APP体验的高性能前端框架——MUI
前 言 MUI有三大特点: 轻量 追求性能体验,是我们开始启动MUI项目的首要目标,轻量必然是重要特征: MUI不依赖任何第三方JS库,压缩后的JS和CSS文件仅有100+K和60+K 原生UI ...
- 2 weekend110的mapreduce介绍及wordcount + wordcount的编写和提交集群运行 + mr程序的本地运行模式
把我们的简单运算逻辑,很方便地扩展到海量数据的场景下,分布式运算. Map作一些,数据的局部处理和打散工作. Reduce作一些,数据的汇总工作. 这是之前的,weekend110的hdfs输入流之源 ...
- 移动端本地 H5 秒开方案探索与实现
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 企业微信移动端项目中有需求要展示数据趋势的可视化图表,经过调研,最终决定以单页面 H5 来完成,对 APP 里的一些使用 H5 实现的功能模 ...
- MUI简介-最接近原生App体验的前端框架
MUI简介-最接近原生App体验的前端框架 一.总结 一句话总结:最接近原生App体验的前端框架 二.多端发布 – 开发一套代码,发布六个平台 真正彻底的跨平台开发,不是简单的跨iOS和Android ...
- 携程Apollo(阿波罗)配置中心本地开发模式不接入配置中心进行本地开发
官方教程:https://github.com/ctripcorp/apollo/wiki/Java%E5%AE%A2%E6%88%B7%E7%AB%AF%E4%BD%BF%E7%94%A8%E6%8 ...
- spark之scala程序开发(本地运行模式):单词出现次数统计
准备工作: 将运行Scala-Eclipse的机器节点(CloudDeskTop)内存调整至4G,因为需要在该节点上跑本地(local)Spark程序,本地Spark程序会启动Worker进程耗用大量 ...
- hadoop本地运行模式调试
一:简介 最近学习hadoop本地运行模式,在运行期间遇到一些问题,记录下来备用:以运行hadoop下wordcount为例子. hadoop程序是在集群运行还是在本地运行取决于下面两个参数的设置,第 ...
- 用户体验要好,App动画得这么做
以下内容由Mockplus团队翻译整理,仅供学习交流,Mockplus是更快更简单的原型设计工具. 在用户体验设计方面,App动画的设计和添加,带给设计师无限的创造空间的同时,也成为设计师群体最具 ...
- vue-class-component 以class的模式写vue组件
vue英文官网推荐了一个叫vue-class-component的包,可以以class的模式写vue组件.vue-class-component(以下简称Component)带来了很多便利: 1.me ...
随机推荐
- 一万三千字的HashMap面试必问知识点详解
目录 概论 Hasmap 的继承关系 hashmap 的原理 解决Hash冲突的方法 开放定址法 再哈希法 链地址法 建立公共溢出区 hashmap 最终的形态 Hashmap 的返回值 HashMa ...
- CentOS下搭建禅道Bug反馈系统
禅道 下载集成版本(apache\php\mysql) wget http://sourceforge.net/projects/zentao/files/8.2.5/ZenTaoPMS.8.2.5. ...
- CentOS创建管理LVM分区(挂载新分区)
来源: CentOS 8.0 创建管理LVM分区(挂载新分区) https://www.iwmyx.cn/centos80cjgllvmfa.html 1.查看可用磁盘 fdisk -l 2.新盘(/ ...
- WPF 学习笔记(一)
一.概述 WPF(Windows Presentation Foundation)是微软推出的基于Windows 的用户界面框架,随着.NET Framework 3.0发布第一个版本.它提供了统一的 ...
- uwsgi+nginx的三种配置方式
第一种 vi /etc/uwsgi.ini uwsgi --reload uwsgi.pid vi /etc/nginx/conf.d/iot.conf service nginx restart 第 ...
- PyQt(Python+Qt)学习随笔:QMdiArea多文档界面区域的viewMode、documentMode、tabsClosable、tabPosition等属性介绍
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 viewMode属性用于控制子窗口是使用子窗口模式(QMdiArea. ...
- Python文件学习遇到的问题
关于open函数文件打开模式的有意思的一个现象 关于Python中中文文本文件使用二进制方式读取后的解码UnicodeDecodeError问题 Python中str类型的字符串写入二进制文件时报Ty ...
- [SQL Server]多次为 '派生表' 指定了列 'id'
问题: 原因: 因为派生表oo中出现了两个同样的'ID'属性,所以会报[多次为 'o' 指定了列 'ID']的错误. 只需要把第二个星号替换成所需要的列名并把重复字段重命名就好了 解决方案:
- jmeter.墨振文档
jmeter 介绍 Apache JMeter是Apache组织开发的基于Java的压力测试工具 (1).它可以用于测试静态和动态资源,例如静态文件.Java 小服务程序.CGI 脚本.Java 对象 ...
- JavaScript:正则表达式匹配规则
正则表达式的语法规则: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...