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

手机客户端和web端开发的异同

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

版本升级。用户角度上看,客户端升级必须让用户手动下载整个新的安装包覆盖安装,而web的升级无需用户做任何事情。开发角度上看,如果客户端有个小bug需要紧急修复,需要修复完后打包一个完成的安装包,给一个版本号,发布给用户升级。而web只需要修改后台的某些文件,然后传到自己的服务器,用多快速的迭代开发方式都没问题。web没有版本兼容性问题,客户端这个问题就大了。
iOS客户端用编译语言,web用脚本语言。编译语言好处:很多错误编译期就知道,不用担心类似写错一个字母导致的问题。iOS客户端开发只能用XCode,无法选用自己喜欢的编辑器。使用脚本语言的web无论前端后端对编辑器的选择都很自由。
客户端一碰到异常就崩溃,直接退出,web一个try catch可以把所有错误抓住,用户可以继续使用其他不受影响的功能,即使所有功能都受影响,刷新页面搞定一切。web上界面和程序实实在在地分离了,客户端再怎样都是粘合在一起的。
发现HTML+CSS样式布局自动排列相当高级,客户端上一切都靠程序去指定大小位置以及排列的变化,可视化的XIB挺鸡肋。
单线程的web很幸福,客户端要处理多线程,虽然强大,但很麻烦。web几乎不用考虑内存泄漏,客户端需要。客户端开发可以使用到很底层的接口和功能。web处于较上层,在浏览器的包裹下,好处是很多问题浏览器处理web不用管,坏处是功能受限。
web和客户端开发差不多都使用类似MVC的模式,数据通过控制器更新到各个视图。web多用callback,iOS多用delegate,虽然iOS也可以用block作为callback,但还是没js方便,还可能导致一些内存问题。
总的来说从开发普通应用来看,就算不谈跨平台,web开发也是好处多多,但这只是开发角度上看,实际上移动设备上webApp状况始终不好,与原生客户端差距很大,原因:

网络不行,流量要钱。国内网络环境大家懂的,虽然HTML5有manifest,storage这些手段缓存webApp,但给人感觉就是不靠谱,打开它还是跟打开一个网页一样的感觉:耗流量,还有可能在网络不好的情况下打不开,没有像已经下载下来的原生APP踏实。
动画/体验。一般的web在页面间切换或显示隐藏某个组件是没有动画的,大家也习惯了,iPhone带了个头,一切都要动画过渡,导致在移动设备上大家习惯了动画切换,受不了没有动画的应用,导致动画性能底下的webApp至今体验上远不如原生客户端。
把webApp通过safari添加到主屏幕这样的习惯非常不普及,极少人知道,不过这个应该也不算问题,若没有上面两个大问题,这个习惯很容易普及的。
P.S 在开发普通应用(数据处理/交互)方面,web有很大的优势,在网络和性能问题解决后理应是首选开发方式。但在游戏领域我看不出web有什么优势,继续对有点热的HTML5游戏开发表示不解。

转载于:https://my.oschina.net/u/2332658/blog/470480

相关文章:

AI 监视打工人,这个国家明确说:保护我方“摸鱼权”!

‍‍撰文 | 刘芳来源 | 学术头条近日,国美控股集团对员工“摸鱼” 的处罚引起了关于职场中隐私权的巨大争议。事实上,这一事件并非个例。如今人工智能(AI)算法在职场中的使用,已经涉及到包含隐私权在内的诸多问题。随着…

Hibernate复习之Hibernate基本介绍

众所周知。眼下流行的面向对象的对象关系映射的Java持久层框架有MyBatis和Hibernate。他们都是对象关系映射ORM。 解决的主要问题就是对象-关系的映射。域模型和关系模型都分别建立在概念模型的基础上。域模型是面向对象的,关系模型是面向关系的,普通情况…

Linux常用命令手册

核心: cat定位,sed时间搜索,grep关键字查询,tail行数,|管道结合 最前N行 这个主要看文件最开始是什么时候记录了什么 #head -1 XXX.log 最后N行 #cat XXX.log | tail -n 10 时间区间搜索 #sed -n /2010-05-20…

程序员敲诈老板,或面临 37 年监禁

‍‍作者 | 祝涛 出品 | CSDN(ID:CSDNnews)12月1日,网络设备制造商优比快(Ubiquiti)的前雇员尼古拉斯夏普(nicholas Sharp)被捕,他被控窃取数据,并试图…

使用modernizr.js检测浏览器对html5以及css3的支持情况

使用modernizr.js检测浏览器对html5和css3的支持情况 详情请看主页:modernizr主页 1. modernizr 是什么? modernize 是一个js库————一个用于检测当前浏览器对html5&css3 的支持情况,其中包括对 css3 的 font-face、border-radius、…

SharePoint运行状况分析器有关磁盘空间不足的警告

对于负责管理SharePoint内部部署安装的SharePoint管理员,SharePoint Health Analyzer是一款出色的工具。此功能不仅有助于解决服务器故障和服务失败的问题,还提供了有关如何解决问题的提示。总的来说,我觉得这个功能非常有帮助。但是&#xf…

百度PHP高级顾问惠新宸:PHP在百度的发展历程

惠新宸,百度PHP高级顾问,年二十有八,好追根究底,有不良嗜好, 幸性本善。乙酉年识互联网,丁亥年入雅虎,翌年入百度。虽性好安稳,然经变无数,唯常叹"人生,菠菜汤尔"。大家好…

Python 远程连接服务器用它就够了

作者 | 费弗里来源 | Python大数据分析❝本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes❞1 简介日常工作中经常需要通过SSH连接到多台远程服务器来完成各种任务,当需要操作的服务器众多,且要执行的任务涉…

如何在centos安装python-mysql

在python中使用mysql,需要安装mysql-python依赖包,可以通过pip来安装:pip install MySQL-python如果发生错误,需要先安装一个开发包:yum install python-devel如果还是报错,运行:yum install my…

DNS 到底怎么工作的? (How does dns work?)

其实这个问题每次看的时候都觉得很明白,但是很久之后就忘记了,所以这次准备记录下来。深入到这个过程的各个细节之中,以后多看看。 Step 1 请求缓存信息: 当你在开始访问一个 www.baidu.com 开始,第一件事情就是去访问…

#pragma pack(n) 的作用

在C语言中,结构是一种复合数据类型,其构成元素既可以是基本数据类型(如int、long、float等)的变量,也可以是一些复合数据类型(如数组、结构、联合等)的数据单元。在结构中,编译器为结…

LoadRunner设置检查点的几种方法介绍

LoadRunner设置检查点的几种方法介绍 发布时间: 2011-5-03 11:53 作者: 一米阳光做测试 来源: 51Testing软件测试网采编 字体: 小 中 大 | 上一篇 下一篇 | 打印 | 我要投稿 3、将脚本切换回代码界面, 在光标闪烁的上行,添加如下的代码&…

Python 爬虫利器 Selenium 从入门到进阶

作者 | 俊欣来源 | 关于数据分析与可视化今天小编就来讲讲selenium,我们大致会讲这些内容selenium简介与安装页面元素的定位浏览器的控制鼠标的控制键盘的控制设置元素的等待获取cookies调用JavaScriptselenium进阶selenium的简介与安装selenium是最广泛使用的开源W…

获取下个月的今天

/* 获取下个月的今天如果 $date 2018-1-31 二月没有31号 则获取二月份的最后一天 返回值为2018-2-28如果 $date 2018-1-15 返回值为2018-2-15 -- psw-- */function getNextMonthDays($date){$firstday date(Y-m-01, strtotime($date));$lastday strtotime("$firstday …

C语言的sizeof和strlen

strlen是函数,而sizeof是算符。strlen需要进行一次函数调用,而对于sizeof而言,因为缓冲区已经用已知字符串进行了初始化,起长度是固定的,所以sizeof在编译时计算缓冲区的长度。因为sizeof()测试的是数组的长度。而strl…

机器人 Ameca「苏醒」瞬间逼真到令人恐惧,网友纷纷惊叹……

整理 | 禾木木 出品 | AI科技大本营(ID:rgznai100) 近日,国内外网友都被一段机器人「苏醒」的视频惊讶到。 视频开始时,机器人似乎已经睡着,眼睛闭着,头部略微向下倾斜。随着肩膀的伸展,机器…

linux源码包卸载方式

linux源码包软件的安装与卸载3人收藏此文章,我要收藏 发表于1年前 , 已有593次阅读 共0个评论Linux软件安装与卸载(源码包形式):一般情况下linux程序的发布不能像windows那样,直接打包成一个setup.exe文件,然用户安装 …

在实践中我遇到stompjs, websocket和nginx的问题与总结

阅读原文:https://wdd.js.org/stomp-over... 1. AWS EC2 不支持WebSocket 直达解决方案 英文版 简单说一下思路:WebSocket底层基于TCP协议的,如果你的服务器基于HTTP协议暴露80端口,那WebSocket肯定无法连接。你只要将HTTP协议修改…

C语言memset函数详解(Linux下和windows下的差异)

memest原型 (please type "man memset" in your shell) void *memset(void *s, int c, size_t n); memset:作用是在一段内存块中填充某个给定的值&#xff0c;它对较大的结构体或数组进行清零操作的一种最快方法。 #include <stdio.h>#include <string.…

Oracle 工程师离职并回踩:MySQL 糟糕透顶,强烈推荐 PostgreSQL

整理 | 祝涛 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;如果你即将离职&#xff0c;你会做什么&#xff1f;抨击自己付出了五年心血的技术——这是Oracle公司前首席软件工程师、MySQL优化器团队成员Steinar Gunderson的选择。这位工程师现已在Chrome团队…

ORA-01109:数据库未打开(解决)

SQL> startup mountORA-01081: 无法启动已在运行的 ORACLE - 请首先关闭它SQL> shutdown immediateORA-01109: 数据库未打开 已经卸载数据库。ORACLE 例程已经关闭。SQL> startup mountORACLE 例程已经启动。 Total System Global Area 612368384 bytesFixed Size 125…

[洛谷P1317]低洼地

题目大意&#xff1a;一组数&#xff0c;分别表示地平线的高度变化。高度值为整数&#xff0c;相邻高度用直线连接。找出并统计有多少个可能积水的低洼地&#xff1f;&#xff08;首尾都为0&#xff09; 题解&#xff1a;求出其中都多少个不严格下降子段和不严格上升子段所夹的…

Linux环境编程--多线程

本文作者: 姚继锋 (2001-08-11 09:05:00) 时隔多年 原文地址已经无从查。。。 居然是2001年就写了 今天看来对初学者还是很有参考意义 所以特转给大家 本人在原文基础上适当修改 1 引言 线程&#xff08;thread&#xff09;技术早在60年代就被提出&#xff0c;但真正应…

Python 到底该怎么学才好?你关心的答案来了

相对于Android、IOS等技术&#xff0c;Python有着更为广阔的应用领域&#xff0c;例如前后端、AI、数据分析、爬虫、自动化、游戏开发等几乎所有领域都有它的应用。但也正因为如此&#xff0c;很多新人在学完Python基础后&#xff0c;根本不知道该选择什么方向深造&#xff0c;…

9513 防空洞

时间限制:1000MS 内存限制:65535K提交次数:104 通过次数:24 题型: 编程题 语言: G;GCC Description 有一天&#xff0c;dragon123偷偷地拿锄头在学校里挖开了一个尘封已久的防空洞。他在这个防空洞里面找到许多贵重的东西&#xff1a;一些石头和一些液体。dragon123知道&…

学习Mybatis与mysql数据库的示例笔记

目录结构&#xff1a; pom.xml文件 1 <?xml version"1.0" encoding"UTF-8"?>2 <project xmlns"http://maven.apache.org/POM/4.0.0"3 xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"4 xsi:schem…

Linux环境编程--进程通信

实验内容 编写程序实现进程的管道通信。用系统调用pipe( )建立一管道&#xff0c;二个子进程P1和P2分别向管道各写一句话&#xff1a;Child 1 is sending a message!Child 2 is sending a message! 父进程从管道中读出二个来自子进程的信息并显示&#xff08;要求先接收P1&…

你的编程能力从什么时候开始突飞猛进的?

如果提到程序员&#xff0c;很多人的印象是&#xff1a;呆板、木讷、不懂浪漫。如果提到代码&#xff0c;很多人的印象是&#xff1a;枯燥、繁琐、很难理解。但其实程序员的浪漫是普通人想象不到的&#xff0c;有一个网友为了追女生&#xff0c;以自己和女生为主角写了一个战棋…

超级 App 手机百度云端架构设计与个性化推荐

2015 年 6 月 28 日下午&#xff0c;百度与 InfoQ 携手举办了手机百度“云和端技术实践”沙龙活动。这是手机百度首次公开超级 App 背后的技术知识。活动分云端和客户端技术两个会场同时举办&#xff0c;吸引了众多技术爱好者前来学习交流。现场人数爆满&#xff0c;气氛热烈。…

Scala和范畴论 -- 对Monad的一点认识

背景 所有一切的开始都是因为这句话&#xff1a;一个单子&#xff08;Monad&#xff09;说白了不过就是自函子范畴上的一个幺半群而已&#xff0c;有什么难以理解的。第一次看到这句话是在这篇文章&#xff1a;程序语言简史(伪)。这句话出自Haskell大神Philip Wadler&#xff0…