当前位置: 首页 > 编程日记 > 正文

Web App、Hybrid App与Native App的设计差异

目前主流应用程序大体分为三类:Web App、Hybrid App、 Native App。

一、Web AppHybrid AppNative App 纵向对比

首先,我们来看看什么是 Web AppHybrid App Native App

1. Web APP

Web App 指采用Html5语言写出的App,不需要下载安装。类似于现在所说的轻应用。生存在浏览器中的应用,基本上可以说是触屏版的网页应用。

优点

1)开发成本低,

2)更新快,

3)更新无需通知用户,不需要手动升级

4)能够跨多个平台和终端。

缺点:

1)临时性的入口

2)无法获取系统级别的通知,提醒,动效等等

3)用户留存率低

4)设计受限制诸多

5)体验较差

2. Hybrid App

Hybrid APP指的是半原生半Web的混合类App。需要下载安装,看上去类似Native App,但只有很少的UI Web View,访问的内容是 Web

例如Store里的新闻类APP,视频类APP普遍采取的是Native的框架,Web的内容。

Hybrid App 极力去打造类似于Native App 的体验,但仍受限于技术,网速,等等很多因素。尚不完美。

3. Native App

Native APP 指的是原生程序,一般依托于操作系统,有很强的交互,是一个完整的App,可拓展性强。需要用户下载安装使用。

优点:

1)打造完美的用户体验

2)性能稳定

3)操作速度快,上手流畅

4)访问本地资源(通讯录,相册)

5)设计出色的动效,转场,

6)拥有系统级别的贴心通知或提醒

7)用户留存率高

缺点:

1)分发成本高(不同平台有不同的开发语言和界面适配)

2)维护成本高(例如一款App已更新至V5版本,但仍有用户在使用V2 V3 V4版本,需要更多的开发人员维护之前的版本)

3)更新缓慢,根据不同平台,提交审核上线 等等不同的流程,需要经过的流程较复杂

二、Web AppHybrid AppNative App 技术特性

由上图可见,Web APP 的开发基于Html5语言。而Html5语言本身又有着不可避免的局限性。正是这些局限性的存在,使得Web App在体验中要逊于Native App

三、Web App受限制因素及设计要点

相比Native AppWeb App体验中受限于以上5个因素:网络环境,渲染性能,平台特性,受限于浏览器,系统限制。

1. 网络环境,渲染性能

Web APP对网络环境的依赖性较大,因为Web APP中的H5页面,当用户使用时,去服务器请求显示页面。如果此时用户恰巧遇到网速慢,网络不稳定等其他环境时,用户请求页面的效率大打折扣,在用户使 用中会出现不流畅,断断续续的不良感受。同时,H5技术自身渲染性能较弱:对复杂的图形样式,多样的动效,自定义字体等的支持性不强。

因此,基于网络环境和渲染性能的影响,在设计H5页面时,应注意以下几点:

ï 简化不重要的动画/动效

ï 简化复杂的图形文字样式

ï 减少页面渲染的频率和次数

从下图移动Web jing.fmNativejing对比后可以看出:Web APP首页去除冗余的功能,回溯本源,只给用户提供了jing.fm最初的本质需求——电台。既符合H5精简功能又达到了突出核心功能的设计原则。无疑给用户眼前一亮的气息。

正如书中《瞬间之美》的一个核心观点:重要的并不是我们提供的信息量有多大,而是我们能否给他们提供真正需要的信息。

再如:百度最新推出的直达号,以良子健身为例:

Native AppWeb App(百度直达号)的对比中,我们可以看出Native良子以九宫格的形式展现,且属于双重导航,功能入口太多;弊端是用户不知道聚焦在哪里,分散用户 的注意力。而Web版良子整合并减少了导航的入口,增强用户的专注度;界面清爽,整洁,很好地传达了良子本身的寓意——轻松、愉悦、休闲、舒适。

 

2. 受限于浏览器

通常Web App生存于浏览器里,宿主是浏览器。不同的浏览器自身的属性不尽相同,如:浏览器自带的手势,页面切换方式,链接跳转方式,版本兼容问题等等。

例如下图:UC 浏览器和百度浏览器自身支持手势切换页面。手指从左侧滑动页面,返回至上一级。百度手机助手H5页面,顶部Banner支持手势左右滑动切换。这一操作与浏览器自身手势是冲突的。

 

再如,基于浏览器的Web APP在打开新的模块中的页面时,大多会新开窗口来展现。例如用户在使用购物类APP时,浏览每日精选模块时,每当打开新的商品时,默认新开一个窗口。这 样的优劣势显而易见:优势是能够记录用户浏览过的痕迹,浏览过的商品,以便后续横向对比;劣势是过多的页面容易使用户迷失在页面中。

正如Google开发手册里描述:当用户打开一个Web App的时候,他们期待这个应用就像是一个单个应用,而不是一系列网页的结合。然而,什么情况下需要跳转页面,什么情况下在当前页面展示则需要设计师细致考量。

 

因此,Web App基于浏览器的特性,从设计角度应该遵循以下了两点:

少用手势,避免与浏览器手势冲突。

减少页面跳转次数,尽量在当前页面显示。

3. 系统限制,平台特性

由于Html5语言的技术特性,无法调用系统级别的权限。例如,系统级别的弹窗,系统级别的通知,地理信息,通讯录,语音等等。且与系统的兼容性也会存在一些问题。以上限制通常导致APP的拓展性不强,体验相对较差。例如百度地图:

Web版地图基于浏览器展现,因此,不能全屏显示地图,给用户的眼界带来局限感;相反,Native 版地图以全屏展现的形式,很好的拓展了用户的视野。整个界面干净简洁,首页去除冗余功能。

在制定路线的体验中,

Web 版地图耗费的流量大于Native版,且不能预先缓存离线地图。对于地理位置的判断也是基于宿主浏览器,而非Web地图本身。获取路线后,对于更换到达方式,相对来说是不便利的。

相反,Native 版地图,能够直接访问用户的地理位置,能够很清晰的为用户展现App规划的路线,并能轻松的查看多种路线方案,以便做出符合自己的最佳方案。对于切换公交,走路,自驾等路线方式也是只需一键操作。

Native 版地图相对于 Web版地图增加更多情感化,易用的功能,如:能够记录用户的生活轨迹,记录用户的点滴足迹,能够享受躲避拥堵方案等。而Web版地图基于技术框架,很难实现以上功能,从用户体验角度来看,弱于Native版地图。

四、小结

综述所述,在设计Web APP时,应当遵循以下几点:

1. 简化

ï 简化不重要的动画/动效

ï 简化复杂的图形文字样式

2. 少用

ï 少用手势,避免与浏览器手势冲突

ï 少用弹窗

3. 减少

ï 减少页面内容

ï 减少控件数量

ï 减少页面跳转次数,尽量在当前页面显示

4. 增强

ï 增强Loading时的趣味性

ï 增强页面主次关系

ï 增强控件复用性

转载于:https://www.cnblogs.com/luckyXcc/p/5831273.html

相关文章:

输入重定向,输出重定向,管道相关内容及实现方法

近期&#xff0c;通过实现shell了解了输入重定向&#xff0c;输出重定向&#xff0c;管道- 用自己的话总结定义&#xff1a; 输入重定向&#xff1a;把<右边的文件的内容输入到<左边的命令中。 输出重定向&#xff1a;把运行>左边命令得出的结果输入到>右边的文件中…

appium+python自动化测试教程_Python+Appium实现自动化测试

一、环境准备 1.脚本语言&#xff1a;Python3.x IDE&#xff1a;安装Pycharm 2.安装Java JDK 、Android SDK 3.adb环境&#xff0c;path添加E:\Software\Android_SDK\platform-tools 4.安装Appium for windows&#xff0c;官网地址 http://appium.io/点击下载按钮会到GitHub的下…

区块链热度飙升 BAT抢先布局话语权争夺战开打

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 今年以来&#xff0c;在互联网金融相对沉寂之后&#xff0c;区块链已当仁不让成为科技领域的主角。区块链作为一项突破性的新技术&#xff0c;如同当…

【CV知识学习】early stop、regularation、fine-tuning and some other trick to be known

深度学习有不少的trick&#xff0c;而且这些trick有时还挺管用的&#xff0c;所以&#xff0c;了解一些trick还是必要的。上篇说的normalization、initialization就是trick的一种&#xff0c;下面再总结一下自己看Deep Learning Summer School, Montreal 2016 总结的一些trick。…

etw系统provider事件较多_【Flutter 实战】文件系统目录

老孟导读&#xff1a;Flutter 中获取文件路径&#xff0c;我们都知道使用 path_provider&#xff0c;但对其目录对含义不是很清楚&#xff0c;此文介绍 Android、iOS 系统的文件目录&#xff0c;不同场景下建议使用的目录。 不同的平台对应的文件系统是不同的&#xff0c;比如文…

BZOJ4491: 我也不知道题目名字是什么

【传送门&#xff1a;BZOJ4491】 简要题意&#xff1a; 给出一个长度为n的序列&#xff0c;m个操作&#xff0c;每个操作输入x&#xff0c;y&#xff0c;求出第x个数到第y个数的最长子串&#xff0c;保证这个最长子串是不上升或不下降子串 题解&#xff1a; 线段树 因为不上升或…

区块链挖矿的钱从哪来 区块链挖矿怎么挣钱

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 进入2018年以来&#xff0c;区块链在资本市场的风口上依然热度不减&#xff0c;已成为当下最热的投资领域。而普通投资者想通过区块链投资赚钱最简单…

Linux-TCP/IP TIME_WAIT状态原理

TIME_WAIT状态原理----------------------------通信双方建立TCP连接后&#xff0c;主动关闭连接的一方就会进入TIME_WAIT状态。客户端主动关闭连接时&#xff0c;会发送最后一个ack后&#xff0c;然后会进入TIME_WAIT状态&#xff0c;再停留2个MSL时间(后有MSL的解释)&#xf…

python如何实现找图_利用OpenCV和Python实现查找图片差异

使用OpenCV和Python查找图片差异 flyfish 方法1 均方误差的算法&#xff08;Mean Squared Error , MSE&#xff09;下面的一些表达与《TensorFlow - 协方差矩阵》式子表达式一样的拟合 误差平方和&#xff08; sum of squared errors&#xff09; residual sum of squares (RSS…

区块链还能赚钱吗 区块链挖矿赚钱吗

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 区块链有多火&#xff0c;连我母上都知道这个词&#xff0c;身边很多人也都向笔者咨询这个东西。 其实他们真实的想法是&#xff0c;想知道这东西到…

pythonfor循环遍历list_为什么for循环可以遍历list:Python中迭代器与生成器

1 引言 只要你学了Python语言&#xff0c;就不会不知道for循环&#xff0c;也肯定用for循环来遍历一个列表&#xff08;list)&#xff0c;那为什么for循环可以遍历list&#xff0c;而不能遍历int类型对象呢&#xff1f;怎么让一个自定义的对象可遍历&#xff1f; 这篇博客中&am…

Linux下查看和添加环境变量

转自&#xff1a;http://blog.sina.com.cn/s/blog_688077cf01013qrk.html $PATH&#xff1a;决定了shell将到哪些目录中寻找命令或程序&#xff0c;PATH的值是一系列目录&#xff0c;当您运行一个程序时&#xff0c;Linux在这些目录下进行搜寻编译链接。 编辑你的 PATH 声明&am…

iis7下站点日志默认位置

iis7下站点日志默认位置 原文:iis7下站点日志默认位置iis7下站点日志默认位置在iis6时&#xff0c;通过iis管理器的日志配置可以找到站点日志存储的位置。但是在iis7下&#xff0c;iis管理器下的日志配置只能找到iis日志配置的主目录&#xff0c;但到底在哪个子目录&#xff0c…

go语言有哪些优势

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 1、学习曲线容易 Go语言语法简单&#xff0c;包含了类C语法。因为Go语言容易学习&#xff0c;所以一个普通的大学生花几个星期就能写出来可以上手的…

重定向后,如何通过浏览器返回定向之前的页面?

js实现页面跳转重定向的几种方式 第一种&#xff1a; 代码如下: <script language"javascript"type"text/javascript">window.location.href"http://shanghepinpai.com";</script> 第二种&#xff1a; 代码如下: <script languag…

金蝶中间件部署报栈溢出_京东618压测时自研中间件暴露出的问题,压测级别数十万/秒...

618大促演练进行了全链路压测&#xff0c;在此之前刚好我的热key探测框架也已经上线灰度一周了&#xff0c;小范围上线了几千台服务器&#xff0c;每秒大概接收几千个key探测&#xff0c;每天大概几亿左右&#xff0c;因为量很小&#xff0c;所以框架表现稳定。借着这次压测&am…

利用box-shadow绘图

上篇博客提到过&#xff0c;box-shadow属性的本质是对形状的复制&#xff0c;那么如果我设置一个1*1px的i标签&#xff0c;利用box-shadow可以叠加的特性&#xff0c;给每一个1*1px的阴影赋上颜色&#xff0c;那么最后不就是一幅图片了么。 html代码很简单&#xff1a; <!do…

为什么要使用Go语言?Go语言的优势在哪里?

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 Go语言之所有越来越受到开发者的欢迎&#xff0c;我认为与其超高的实用价值密不可分。要知道Go语言是为了解决现实问题而设计的&#xff0c;而不是为…

BI之SSAS完整实战教程3 -- 创建第一个多维数据集

上一篇我们已经完成了数据源的准备工作&#xff0c;现在我们就开始动手&#xff0c;创建第一个多维数据集(Cube)。 文章提纲 使用多维数据集向导创建多维数据集 总结Cube设计器简介 维度细化 总结 一、使用向导创建多维数据集 在Analysis Services中&#xff0c;可以通过3种…

python opencv local_threshold_Python-OpenCV中的cv2.threshold

主要记录Python-OpenCV中的cv2,threshold()方法&#xff1b;官方文档 cv2.threshold() def threshold(src, thresh, maxval, type, dstNone): """ 设置固定级别的阈值应用于多通道矩阵 例如&#xff0c;将灰度图像变换二值图像&#xff0c;或去除指定级别的噪声…

java中decimalFormat格式化数值

介绍 我们经常要对数字进行格式化&#xff0c;比如取小数点后两位小数&#xff0c;或者加个百分比符号等&#xff0c;Java提供了DecimalFormat这个类0 和 # 的区别 "#"可以理解为在正常的数字显示中&#xff0c;如果前缀与后缀出现不必要的多余的0&#xff0c;则将其…

GO语言有哪些优势?怎样入门?

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 1、学习曲线 它包含了类C语法、GC内置和工程工具。这一点非常重要&#xff0c;因为Go语言容易学习&#xff0c;所以一个普通的大学生花一个星期就能…

POJ-2955 Brackets

题目大意&#xff1a; 给你一个只由(、)、[、]组成的字符串&#xff0c;问你这个字符串的子串能够匹配的最长长度是多少。 能够匹配的意思是这样的&#xff1a; 1.如果s是个空串&#xff0c;那么它是匹配的。 2.如果子串是(s)或者[s]&#xff0c;那么它也是匹配的&#xff0c;其…

CentOS7.4-btrfs管理及使用

btrfs, B-tree File System, GPL开源文件系统, 支持CoW即读时写入. 核心特性: 多物理卷支持;btrfs可由多个底层磁盘组成支持RAID mkfs.btrfs 命令的man文档支持: raid0, raid1, raid5, raid6,raid10, single or dup联机"添加, 移除, 修改" CoW写时复制更新机制 对文件…

取消对 null 指针“l”的引用。_C++中的引用

当变量声明为引用时&#xff0c;它将成为现有变量的替代名称。通过在声明中添加“&#xff06;”&#xff0c;可以将变量声明为引用。#include using namespace std; int main() { int x 10; // ref is a reference to x. int& ref x; // Value of x is no…

你没听说过的Go语言惊人优点

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 在这篇文章中&#xff0c;我将讨论为什么你需要尝试一下 Go 语言&#xff0c;以及应该从哪里学起。 Go 语言是可能是最近几年里你经常听人说起的编…

JS document

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title></head><body><div id"one">今天下雨</div><table border"1" cellspacing"0" cellpadding"…

python 流写入文件_python文件流操作

博主在学习python时对文件进行操作时经常踩一下坑。所以专门梳理了一下。有问题麻烦指出哈。 python对于文件的操作我们一般是用open&#xff08;&#xff09;。我们根据python的源码可以看出。我们必须要传的参是file即打开文件的URL。同时open方法默认是是r的打开方式即只读。…

使用 Python 从零开始开发区块链应用程序

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 “区块链”是什么&#xff1f; 区块链是一种存储数字数据的方式。数据可以是任何内容。对于比特币&#xff0c;它是事务&#xff08;在帐户之间转移…

Mybatis学习记录-使用问题总结之一DISTINCT

问题1&#xff1a;手动修改的查询语句&#xff0c;放入到项目中后显示结果和实际查询结果不一致 由于实际情况中用的了分页功能&#xff0c;导致最终的语句在查询完成后&#xff0c;添加了分页项&#xff0c;即如下代码。 ROW_NUMBER() OVER ( ORDER BY COLUMNS) PAGE_ROW_NUMB…