转载自:http://blog.cnbang.net/tech/1813/
不知不觉做iOS客户端开发已经半年多了,了解到iOS客户端开发与Web前端开发的一些异同,写一下。

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

总的来说从开发普通应用来看,就算不谈跨平台,web开发也是好处多多,但这只是开发角度上看,实际上移动设备上webApp状况始终不好,与原生客户端差距很大,原因:

  1. 网络不行,流量要钱。国内网络环境大家懂的,虽然HTML5有manifest,storage这些手段缓存webApp,但给人感觉就是不靠谱,打开它还是跟打开一个网页一样的感觉:耗流量,还有可能在网络不好的情况下打不开,没有像已经下载下来的原生APP踏实。
  2. 动画/体验。一般的web在页面间切换或显示隐藏某个组件是没有动画的,大家也习惯了,iPhone带了个头,一切都要动画过渡,导致在移动设备上大家习惯了动画切换,受不了没有动画的应用,导致动画性能底下的webApp至今体验上远不如原生客户端。
  3. 把webApp通过safari添加到主屏幕这样的习惯非常不普及,极少人知道,不过这个应该也不算问题,若没有上面两个大问题,这个习惯很容易普及的。

P.S 在开发普通应用(数据处理/交互)方面,web有很大的优势,在网络和性能问题解决后理应是首选开发方式。但在游戏领域我看不出web有什么优势,继续对有点热的HTML5游戏开发表示不解。

iOS客户端开发与Web前端开发的更多相关文章

  1. 移动前端开发和 Web 前端开发的区别是什么

    可以分成两部分理解1.服务器端开发,也叫后台开发,这是唯一的,对应不同的平台,他负责数据的分发与存储,和一些逻辑的处理.逻辑处理的多少由业务的复杂程度决定.服务端相对独立,与平台没啥关系. 2..1中 ...

  2. 移动前端开发和 Web 前端开发的区别

    http://www.itcast.cn/news/20180125/16033584753.shtml 1,普通PC端开发与移动端开发区别. 先说背景,我大言不惭的说一下,我pc端的前端开发干了有快 ...

  3. 【web开发】web前端开发常用技术总结归纳

    技术选型规范规范 • Vue版本:2.x • 前端路由:vue-route • 异步请求:Axios • 全局状态管理:VueX • css预处理器:sass/less • h5项目移动端适配规则:使 ...

  4. 一张图说明移动前端开发与web前端开发的区别

  5. Web前端开发最佳实践(1):前端开发概述

    引言 我从07年开始进入博客园,从最开始阅读别人的文章到自己开始尝试表达一些自己对技术的看法.可以说,博客园是我参与技术讨论的一个主要的平台.在这其间,随着接触技术的广度和深度的增加,也写了一些得到了 ...

  6. Web前端开发最佳实践(3):前端代码和资源的压缩与合并

    一般在网站发布时,会压缩前端HTML.CSS.JavaScript代码及用到的资源文件(主要是图片文件),目的是加快文件在网络中的传输,让网页更快的展现.当然,CDN分发.缓存等方式也是加快代码或资源 ...

  7. Web前端开发(高级)下册-目录

    多媒体与绘图 多媒体音频格式视频格式 HTML5多媒体支持 <audio>和<video> htmlaudioElement和htmlVideoElement <audi ...

  8. Web前端开发高手进阶

     Web前端开发高手进阶 js框架+Ajax技术01.初识javascript及其语言基础(一)02.初识javascript及其语言基础(二)03.初识javascript及其语言基础(三)及js原 ...

  9. Web前端开发工程师基本要求

    一位好的Web前端开发工程师在知识体系上既要有广度,又要有深度,所以很多大公司即使出高薪也很难招聘到理想的前端开发工程师.现在说的重点不在于讲解技术,而是更侧重于对技巧的讲解.技术非黑即白,只有对和错 ...

随机推荐

  1. CPU高问题排查

    双11大战开始了,这几天公司系统压测,CPU各种报警,于是找了篇关于CPU高问题排查的文章. 一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环. (友情提示:本博文章欢迎 ...

  2. centos 6 安装docker

    安装 Fedora EPEL 1.yum -y install http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarc ...

  3. NHibernate初步使用

    1.创建一个网站项目:QuickStart 2.引用程序集:NHibernate.dll 3.更改配置文件加入以下节点: <configSections> <section name ...

  4. 第二次冲刺spring会议(第二次会议)

    [例会时间]2014/5/5 21:15 [例会地点]9#446 [例会形式]轮流发言 [例会主持]马翔 [例会记录]兰梦 小组成员:兰梦 ,马翔,李金吉,赵天,胡佳奇 界面的一些修改如下

  5. C++著名程序库的比较和学习经验(STL.Boost.GUI.XML.网络等等)

    1.C++各大有名库的介绍--C++标准库 2.C++各大有名库的介绍--准标准库Boost 3.C++各大有名库的介绍--GUI 4.C++各大有名库的介绍--网络通信 5.C++各大有名库的介绍- ...

  6. mnesia

    1.模式创建 mnesia:create_schema([node()|nodes()]).集群的节点之间创建模式 2.启动和停止 application:start(mnesia). applica ...

  7. genymotion模拟器配置X86模拟器加速器

    网上下载zip包 http://download.csdn.net/download/we5868123/9430140 直接拖进去即可,虚拟机不能使用管理员权限启动 名字为:解决genymotion ...

  8. ACE_Message_Block消息数据类

    ACE_Message_Block ACE_Message_Block用于构建"固定"和"可变"长度的消息.ACE_Message_Block可以将多条消息连接 ...

  9. 【第五篇】androidEventbus源代码阅读和分析之unregister代码分析

    代码里面注销eventbus一般我们会在onDestory里面这么写: EventBus.getDefault().unregister(this); 然后走到unregister里面去看看: /** ...

  10. php给数组key:value中的key加引号

    public function Ext_json_decode($str, $mode=false){ if(preg_match('/\w:/', $str)){ $str = preg_repla ...