|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
在python中的函数__xxxNSString字符串NSArray数组NSDictionary字典这些都需要弄很清楚其他的类都是一个套路NSMutableArray这样带Mutable的类代表可变的David,RubyonRails作者,37signals合股人
滞销书作家、演说家、赛车手、专业拍照师、顾家好汉子
37signals在2013年2月公布了Basecamp的iPhoneapp,在此之前我们就利用原生开辟(native)仍是夹杂开辟(hybrid)做了很多实验。在2012年项目启动的时分,年夜多半人都偏向于原生开辟。
Facebook在2012年公布了他们新的iOSapp,为了取得更好的用户体验,他们保持了本来的HTML5夹杂开辟体例。思索到2010~2011年的时分,HTML在挪动真个功能的确不尽善尽美,这个决意在事先看来也在道理当中。2010年的时分我们以为iPhone3G/3GS够眩够快,但依照如今的尺度来看它们就太慢了。因而在为挪动使用开辟做架构计划时,我们必要思索新的挪动设备的盘算才能,而不是那些老的过期的设备。
挪动开辟架构计划不必要过量思索设备的功能
我们从一些测试中得出的一个结论是:如今的挪动设备盘算才能都很强,运转原生使用和HTML使用的效果不同不年夜,而HTML开辟的本钱则要比原生开辟小很多。
固然这个结论在某些范畴其实不太合用。假如你要开辟一个3D游戏,原生开辟体例可以带来更好的游戏体验。但假如你的挪动使用象Basecamp一样偏重信息处置,为了下降开辟本钱,你就能够思索夹杂开辟体例。我们就是云云,上面是我们三代挪动产物的开展轨迹:
第一代产物:原生外壳(nativeshell)+嵌套WebView
<br>
这个版本就是一个复杂的原生外壳卖力界面导航,嵌套一个WebView来显现BasecampRailapplication,显现的基础上都是我们挪动网站页面,再加上一些特别的款式。
在挪动网站的页面上嵌套一个原生的壳,听起来仍是Web页面,但实践带给用户的体验确长短常分歧。用户能够在AppleAppStore找到我们的app,他们一旦登录app后能够不再用从头登录(挪动版本的Safari仿佛会常常清空cookie,让你不能不从头登录)。我们的app年夜受接待,用户评分在4和5之间。
全部app由一位程序员和一位计划师开辟,本钱不高,由于我们能够在已有的挪动网站的基本上开辟。
假如我们现在开辟完整原生的app,用10团体的团队1年半的工夫也一定能完成。
第二代产物:原生外壳+原生导航界面
<br>
几个月前公布的BasecampAndroidapp是我们的第二代产物,我们在个中做了大批的改善。
从第一代iPhoneapp中我们感觉到了原生导航界面的能力,以是在Android版本中,我们由HTML页面导航转向了原生导航界面。我们从HTML页面熟成原生导航界面,用户体验加倍流利,原生界面和HTML页面的体验不同愈来愈小,乃至很难辨别哪些是原生部分,哪些是HTML。
Android版本是由一两个程序员和一个计划师开辟(50%投进)完成的。我们重用了挪动站点和iPhoneapp中利用的一切webview,年夜年夜进步了开辟效力,同时用户也很买账,凌驾1000名用户打了4.5~5的高分。
良多公司在埋怨他们的iOS挪动项目停顿迟缓,Android项目仿佛更是云云。也许他们已习气了iOS项目标开辟流程,大概是由于Android的屏幕碎片化成绩,可是这些对我们来讲那都不是事。我们推出的Androidapp体现优秀,重用了95%的代码,开辟团队也一向坚持在小范围。
量体裁衣地使用原生开辟体例
今朝我们正在开辟第三代产物,公布的平台临时保密,不外你应当也不难猜到。在前两代产物中,我们增添了原生导航界面的利用,同时进一步断定了以webview为中心的全体架构。在第三代产物中,我们将量体裁衣地选择必要利用原生开辟的功效,好钢要用在刀刃上。
从之前的100%HTML,到如今的90%HTML+10%原生,我们会选择最值得做原生开辟的那10%的部分,终极目标是让app原生部分和HTML部分的体验没有太年夜区分。
夹杂开辟形式利用的手艺
夹杂开辟形式在手艺很复杂,次要是处置webview的集成、Web页面的加载,和原生内容和HTML内容之间的交织链接,实在大概比你想像的还要复杂很多。
HTML方面,我们的RailsWeb使用撑持Web和挪动两年夜平台,个中Rails4.1featureofvariants起了很年夜的感化。
这也很年夜水平上有助于我们公布新功效。假想一下假如我们每次必要更新这么多平台:Railsdesktopapp,aRailsAPIapp,aclient-sideMVCapp,amobilewebwrapperapp,anAndroidapp,andaniPhoneapp,像我们如许只要10个程序员和7个计划师的公司基本有力承当云云伟大的事情量。
除事情量的加重,bug修复效力也进步了,由于年夜部分的代码逻辑是在Web服务器端,我们能够随时修正代码并公布,不必经由过程AppleAppStore的审批流程。以是我们的挪动app和Web使用一样,也是延续部署。
就如我之条件到的,夹杂形式开辟其实不合用于一切情形。在2010年之前,当时手机的处置才能都不强,以是HTML/JS的体验其实不好,用户也不喜好。可是一成不变,如今手机的处置才能年夜年夜进步了,HTML/JS的功能也不再是一个成绩。
夹杂开辟形式对原生开辟形式的应战
夹杂开辟形式在下降开辟庞大度方面有它的上风,假如你的产物是以显现和处置信息为主,我以为都能够分歧水平地接纳这个形式。
关于小型团队和公司而言,其实不必定必要接纳iOS原生app先行的形式。利用夹杂形式,不必要你重头开辟一个app,如许能够下降保护本钱,未来扩大到其他平台也更加便利。
固然我晓得会有良多人质疑这个形式,也许由于他们的app中有良多中央必要原生开辟(大概仅仅是他们本人如许以为而已)。又也许他们已花了良多工夫让app里的UITableView看起来十分大度,乃至假如其他中央不如许的话显得不是太完善。再也许至公司就是喜好耗时耗力的原生开辟,有钱就是这么率性。
不管如何,夹杂开辟当下应当可以成为我们挪动开辟战略的一个选择。假如你以为这是一个好的选择,那末祝贺你,恣意兴奋地游玩吧!
原文链接:Hybridsweetspot:Nativenavigation,webcontent
上面增补一些David答读者问:
MikeWaite@2014-05-08:我很猎奇你是怎样决意哪些功效要用原生开辟?
David@2014-05-08:次要靠感到,这究竟不是一门迷信。假如你感到你app的某一部分假如用原生开辟会更好些,能够实验做疾速原型(spike)。良多时分我们经由过程这类体例证实我们的设法实际上是错的。固然假如你必要利用得手机上的功效如:摄像和其他设备时,HTML今朝还不太合用,不外永久也不要把话说逝世。
你可能还需要学习使用Xcode这个开发环境,接著你需要掏钱向苹果注册开发者权限,基本的帐号是99美金。本视频为“斯坦福大学iPhone开发教程”,51CTO将不断关注本视频教程的更新进度,为大家提供最新的视频。 |
|