本地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 ...
随机推荐
- cobbler 装机服务
一.Cobbler 安装 $ yum install -y epel-release $ yum install -y cobbler cobbler-web pykickstart debmirro ...
- C# WinForm UDP 发送和接收消息
using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; ...
- 领域设计:Entity与VO
本文探讨如下内容: 什么是状态 什么是标识 什么是Entity 什么是VO(ValueObject) 在设计中如何识别Entity和VO 要理解Entity和VO,需要先理解两个概念:「状态」和「标识 ...
- JAVA在最新版Windows10_1909版本环境下的环境变量配置
1.配置 1.1新建 JAVA_HOME C:\Program Files\Java\jdk-13.0.2 1.2新建 CLASSPATH .;%JAVA_HOME%\bin;%JAVA_HOME%\ ...
- Appium之测试微信小程序
坚持原创输出,点击蓝字关注我吧 作者:清菡 博客:Oschina.云+社区.知乎等各大平台都有. 目录 一.往期回顾 二.测试微信小程序 1.准备工作 2.操作步骤 3.注意 4.强制设置安卓的进程 ...
- Unity使用transform.Translate()移动子物体时遇到的小问题
Unity使用transform.Translate()移动子物体时遇到的小问题 情况大概是这样:父物体A下有子物体B,希望使B在本地坐标系下移动1单位. B物体挂脚本代码如下: transform. ...
- 【入门】ZooKeeper 相关概念总结
1. 前言 相信大家对 ZooKeeper 应该不算陌生.但是你真的了解 ZooKeeper 到底有啥用不?如果别人/面试官让你给他讲讲对于 ZooKeeper 的认识,你能回答到什么地步呢? 拿我自 ...
- PyQt(Python+Qt)学习随笔:QListView的wordWrap属性
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QListView的wordWrap属性与QTableView的wordWrap属性功能完全相同,用 ...
- B站自动爬取器并制作词云
效果 词云展示 弹幕展示 爬取弹幕过程 基本步骤 1.寻找视频url 2.构造请求头 3.寻找弹幕地址 4.根据弹幕地址运用正则或xpath爬取 寻找B站视频的url 制作请求头 headers = ...
- centos7 yum搭建lamp
环境 系统:centos7 安装apache #yum 安装apache [root@localhost ~]# yum install httpd httpd-devel #启动httpd服务 [r ...