iOS客户端开发与Web前端开发

jopen 7年前
   不知不觉做 iOS 客户端开发已经半年多了,了解到 iOS 客户端开发与 Web 前端开发的一些异同,写一下。   <p> 1、版本升级。用户角度上看,客户端升级必须让用户手动下载整个新的安装包覆盖安装,而 web 的升级无需用户做任何事情。开发角度上看,如果客户端有个小 bug 需要紧急修复,需要修复完后打包一个完成的安装包,给一个版本号,发布给用户升级。而 web 只需要修改后台的某些文件,然后传到自己的服务器,用多快速的迭代开发方式都没问题。web 没有版本兼容性问题,客户端这个问题就大了。</p>    <p> 2、iOS 客户端用编译语言,web 用脚本语言。编译语言好处:很多错误编译期就知道,不用担心类似写错一个字母导致的问题。iOS 客户端开发只能用 XCode,无法选用自己喜欢的编辑器。使用脚本语言的 web 无论前端后端对编辑器的选择都很自由。</p>    <p> 3、客户端一碰到异常就崩溃,直接退出,web 一个 try catch 可以把所有错误抓住,用户可以继续使用其他不受影响的功能,即使所有功能都受影响,刷新页面搞定一切。web 上界面和程序实实在在地分离了,客户端再怎样都是粘合在一起的。</p>    <p> 4、发现 HTML+CSS 样式布局自动排列相当高级,客户端上一切都靠程序去指定大小位置以及排列的变化,可视化的 XIB 挺鸡肋。</p>    <p> 5、单线程的 web 很幸福,客户端要处理多线程,虽然强大,但很麻烦。web 几乎不用考虑内存泄漏,客户端需要。客户端开发可以使用到很底层的接口和功能。web 处于较上层,在浏览器的包裹下,好处是很多问题浏览器处理 web 不用管,坏处是功能受限。</p>    <p> 6、web 和客户端开发差不多都使用类似 MVC 的模式,数据通过控制器更新到各个视图。web 多用 callback,iOS 多用 delegate,虽然 iOS 也可以用 block 作为 callback,但还是没 js 方便,还可能导致一些内存问题。</p>    <p> 总的来说从开发普通应用来看,就算不谈跨平台,web 开发也是好处多多,但这只是开发角度上看,实际上移动设备上 webApp 状况始终不好,与原生客户端差距很大,原因:</p>    <p> 1、网络不行,流量要钱。国内网络环境大家懂的,虽然 HTML5 有 manifest,storage 这些手段缓存 webApp,但给人感觉就是不靠谱,打开它还是跟打开一个网页一样的感觉:耗流量,还有可能在网络不好的情况下打不开,没有像已经下载下来的原生 APP 踏实。</p>    <p> 2、动画/体验。一般的 web 在页面间切换或显示隐藏某个组件是没有动画的,大家也习惯了,iPhone 带了个头,一切都要动画过渡,导致在移动设备上大家习惯了动画切换,受不了没有动画的应用,导致动画性能底下的 webApp 至今体验上远不如原生客户端。</p>    <p> 3、把 webApp 通过 safari 添加到主屏幕这样的习惯非常不普及,极少人知道,不过这个应该也不算问题,若没有上面两个大问题,这个习惯很容易普及的。</p>    <p> P.S 在开发普通应用(数据处理/交互)方面,web 有很大的优势,在网络和性能问题解决后理应是首选开发方式。但在游戏领域我看不出 web 有什么优势,继续对有点热的 HTML5 游戏开发表示不解。</p>    <div id="come_from">    来自:     <a id="link_source2" href="/misc/goto?guid=4958342178766447937" target="_blank">blog.cnbang.net</a>    </div>