IOS编程:ThoughtWorks王秋:渐进加强在挪动开辟中使用仓酷云
除了在程序加载的时候把我的view加载到他上目前我还没用到过其他的苹果一直很推崇MVC的程序结构视图模型控制器简单说就是视图负责显示内容模型负责所有数据的保存结构或者一些其他数据操作控制器是用来协调视图和模型举车的发动机系统的例子在方才停止的百度开辟者年夜会西安站上,来自ThoughtWorks的前端工程师王秋(@Sheldon-秋),举行了题为《挪动Web开辟中的渐进加强》的演讲。在稍后的OpenSpace环节,他还担当话题小组长与参会者举行了会商,笔者就渐进加强的成绩对其举行了采访,以下是具体内容。InfoQ:请复杂先容一下本人和今朝所处置的事情?
王秋:人人好,我是王秋,是ThoughtWorks的一位前端工程师,JavaScript言语喜好者,平常喜好研究手艺寻觅冲破,擅长分享履历。比来在专注前端开辟的测试手艺。今朝开辟事情中触及到一些WebApp事情,客户所利用的平台年夜部分是iOSSafari扫瞄器,为了更好的办理兼容性成绩,我们入手下手利用渐进加强(ProgressiveEnhancement)的开辟头脑,垂垂对它有了更深的了解。
InfoQ:PE的中心内容是甚么,请谈下您对渐进加强的了解?
王秋:PE是之内容为中心,在内容之上我们增加上款式和剧本使之有了表面和举动的开辟头脑。我以为,关于用户、BA、UX来讲,内容能够是网站给会见的用户带来的内容和功效,详细能够是网站中的笔墨,也包含网站带给用户的交互功效,好比说发送邮件,填写表单,乃至还大概为给用户带来的视觉效果、色彩搭配、排版、浏览体验等等。可是,关于我们开辟者来讲,PE中心内容就是我们的HTML代码,简便易懂的标志们。HTML是Web传送内容的基本,是开辟者们制造页面功效的基本,也是几近一切扫瞄器出现页面功效的基本,开辟职员经由过程增加CSS款式和JavaScript代码使内容在更好的扫瞄器上事情得更好,提拔用户体验。
电视机的开展是个很好的例子。家里的电视机是由90年月初的口角电视机换到00年摆布的CRT黑色电视机,跟着科技开展,到如今有了LED高清电视机,乃至呈现了3D电视机。关于用户来讲,电视机给他们带来的是电视节目,看CCTV都看了这么多年了,先辈的电视机给用户带来了新的抚玩体验,不但带来了色采,还带来了高清的画质,丰厚的不雅影体验。反过去看,一样内容的电视节目一样能够在旧的电视机上播出,内容一样能被用户猎取到,这统统都是向后兼容的,PE给我们带来的优点就在于此。扫瞄器的开展,从Netscape到如今的Chrome也是相似的一个开展历程,从扫瞄器不撑持图片显现,只撑持复杂的笔墨和链接,开展到撑持图片和网格结构,到如今的WebGL图形手艺,渐渐供应更好的体验给用户。我们的网站应当给用户带来的是尽量一样的体验,而并不是是完整一样的。你也不克不及期望一个Kindle的silk扫瞄器能像Chrome体现得那末杰出。
我们必要重新审阅办理扫瞄器兼容性这个成绩,我们的开辟必要从一向一来的以兼容性为方针的开辟转化为以可用性为方针的开辟,可用性指的是网站带给用户的功效从一入手下手就是跨扫瞄器的,这个和文雅退步存眷的点分歧。
InfoQ:从今朝的角度来说,PE获得了哪些停顿,碰到的次要成绩有哪些?
王秋:Web手艺一日千里,因为扫瞄器战争台的差别性,PE的开辟变得加倍庞大,由刚入手下手的三层布局变成了如今的多层布局,我们在开辟加强时,能够间接利用CSS举行加强,大概JavaScript举行加强,还能够夹杂在一同举行加强,除此以外还会发生加强之间的依附。好比撑持JavaScript的情形有一个加强,撑持WebGL的时分会附加上另外一个加强,后者依附于前者。固然PE的模子变得庞大,可是我们应当经由过程计划把持加强的条理和每层中的加强个数,从而把持程序的庞大度。
InfoQ:请谈下在挪动开辟中的存眷点次要有哪些?
王秋:我以为挪动Web开辟和桌面Web开辟的流程是一样的,以是不必特地的把他们分隔。利用PE体例开辟Web程序必要注重的中央次要是上面几个部分:
[*]UX计划出来的页面会含有良多庞大的款式和交互,可是开辟时必要从最基础的有语义的标签动手,由于复杂有语义的标签可让开辟职员更简单往制造交互,一切好的计划都是从复杂动身的。并且,我们开辟的时分思索的应当是我们必要甚么样的原生控件往搜集用户的无效信息,而不该该只存眷于模样。特别在WebApp开辟中,UX常常会计划出和NativeApp相似的表面,旨在最求给用户带来和NativeApp一样的体验。在这类情形下,开辟职员越应当从基本的HTML入手下手。
[*]WebApp的盛行和先辈的挪动扫瞄器被普遍利用是严密相连的,这些扫瞄器常常都能很好的撑持HTML5和CSS3手艺。这两项手艺能给我们带来更多的语义的标签、当地存储的才能、更多更强的款式撑持、壮大的DOMAPI等等。我们虽能够在这些平台上年夜展四肢举动,可是假如因为先辈的手艺健忘了PE的实质,那末你的网站也就只能限定在这些平台上被会见到。假如你的客户利用不撑持以上手艺的扫瞄器、大概禁用到JavaScript大概CSS、又大概在收集对照慢时会见你的网站,你甚么都不克不及供应给他们,没有效户会见便没有了代价。也就是说,我们应当选择先辈的手艺能给用户带来更好更多的猎取中心内容的利用体验。好比说一个图片检察,在一般扫瞄器上,可使用一个独自的页面翻开图片,使用扫瞄器特征举行缩放,而假如是撑持touch的手机扫瞄器上,我即可以撑持在有图片显现的中央间接经由过程手势操纵来缩放。
[*]我们在利用PE的过程当中,并非针对某个平台举行加强,而是判别以后运转的平台是不是撑持某种才能,好比是不是撑持多点触摸、是不是撑持Canvas等等。假如保持判别扫瞄器是不是是IE,那末当IE更新后,用户仍然也利用不了初级功效。并且有些扫瞄器是能够摹拟UA的,假如用户利用初级扫瞄器摹拟初级扫瞄器来会见,那末你的网站会变得一团糟。
[*]PE的开辟已变得不但是HTML+CSS+JS三层了。在庞大的情况下,PE的模子已变成多层布局。在基本功效完全的情形下,使用CSS举行加强,再使用JavaScript举行加强,乃至在多层的基本上,还会发生加强依附,好比在某一个加强存在的基本上,往检测另外一个扫瞄器才能,撑持某一特定的功效。在庞大的情形下,我们会使用到像Modernizr如许的库来匡助开辟,乃至你可使用它来举行ResponsiveDesign(呼应式计划)开辟。
InfoQ:怎样做PE测试?
王秋:PE的测试能够回结于一句话,就是包管最基本的功效健全的基本上,测试各个加强。如许我们能够包管,不管是用户在收集对照慢,大概利用不撑持加强的扫瞄器会见网站,乃至用户出于平安性思索禁用失落剧本时,我们都能供应给他们一个完全可用的版本。为了到达这个目标,我们能够从这么几个点动身:
[*]面向对象的开辟各个加强,每一个加强都能够举行开关。如许做的优点是,能够便利的办理加强,包管每一个自力加强不影响之前的功效;经由过程开关加强,不但能够测试加强前后的版本是不是都能够一般事情,并且还能够经由过程统一级其余加强能够互相组合举行测试,检察是不是互相影响;假如对象化的办理加强,能够很便利的开辟“回到基本版本”如许的功效,让用户在低带宽情形下自动切换版本,像Gmail挪动web版本一样。有人质疑过如许做会不会带来更多开辟本钱,我的谜底是不,优秀的布局能够带给程序强健性和扩大性,就像面向对象开辟一样。别的,模块化的前端开辟其实不会给代码形成凌乱而会更简单的办理前端代码。
[*]选择得当的驱动,便利做主动化测试。要做到办理兼容性,不成能把一切平台都测试一遍,一些和特定扫瞄器才能有关的测试能够在统一扫瞄器长进行测试,和特定才能相干的测试便必要选择得当的主动化扫瞄器驱动。好比,假如是必要测试mobilesafari上测试特有功效,那末能够选择间接驱动mobilesafari扫瞄器,可是一样平常的链接跳转,form提交之类的功效能够在Chrome长进行测试。
[*]假如是测试Mobile上的手势功效,也能够经由过程在Chrome大概Firefox长进行测试,由于在Mobile中的Touch加强,本色上是绑定了touchstart、touchmove、touchend事务,那末这些事务在不撑持touch的扫瞄器上是被视为自界说事务,经由过程动身自界说事务即可以举行测试。
InfoQ:跟着渐进加强的开辟,体验乃至会构成一个从下到上的链式布局,那末假如最底层的内容改动的时分应当怎样处置创建在其上的一切加强呢?
王秋:这类情形是对照糟的一种,只需是开辟中碰到程序底层改动的,常常城市引来年夜局限的修正,并且是不成制止的。我们存眷的应当是我们必要修正的中央和修正后质量的包管。我们经由过程面向对象的开辟每一个加强,一切加强的点都是被办理的,当底层代码修正的时分,很简单剖析哪些加强必要被修正,别的,主动化的PE测试能包管我们的修正没有影响到加强前后的功效。在PE的开辟中,应当把持这个链式布局的层数和每层的加强个数,由于每扩大一个加强,测试的庞大度将会指数上升。今朝来看,PE的开辟还没有庞大到这类水平。
InfoQ:在加强过程当中,怎样选择合适的加强体例?
王秋:Web开辟有一个准绳,优先利用CSS办理成绩,然后再思索JavaScript办理。在PE开辟中,为了让款式和剧本都是静态加载上往的,模块化的开辟变得尤其主要,同时也能够利用Modernizr如许的Library匡助开辟。假如加强对照庞大,触及到大批的View操纵,那末还可使用一些前端模板手艺。
InfoQ:因为功效是渐进加强上往的,那末测试必要cover的点就会变多,被加强的部分大概加强后功效是好的但不见得加强之前的功效也是好的,即便加强前的版本没有人用到。这些过剩的effort是值得做的么?
王秋:我以为值得这么做,PE在跨平台上给我们带来的优点是不言而喻的,由于我们没有那末决心的往寻求它,兼容性成绩在入手下手开辟时候就办理了。别的,PE之内容为中心,可让我们的核心永久都会合在应当给用户供应的内容上,由于内容才是营业的重中之重,发生代价的中央。用付出功效作为例子,假如网站没有供应最基本的HTML版本让用户完成付出,哪怕就丧失5%的用户,一年上去的丧失也是伟大的。另有,PE开辟从可用性动身,我们乃至必要思索的网站的内容在浏览器是不是事情,打印形式下是不是显现的够好等等。我想这也是寻求出色软件的一方面吧。
关于开辟来讲,PE还能给我们的程序带来强健性和扩大性,让我们的前端代码更简单办理,兼容性测试加倍周全。
InfoQ:在百度开辟者年夜会上,您与开辟者会商的过程当中,开辟者对照存眷哪方面的话题?
王秋:十分高兴能和现场的开辟者们举行交换,次要提到的话题有关于渐进加强中静态加载CSS和JavaScript方面的,有关怎样选择WebApp和NativeApp的,另有聊到Web开辟趋向,好比游戏,3D开辟方面的。有些开辟者还对我们公司的前端雇用感乐趣。全部历程很风趣,我和他们交换中也学到良多工具。
InfoQ:是不是有进修的资本保举(文章、项目或书本等)?
王秋:在这里能够保举人人一本关于渐进加强的书《DesigningwithProgressiveEnhancement》,别的,在http://www.alistapart.com/上也能找到良多关于渐进加强的文章。开辟方面,能够往Modernizr和jQueryMobile的官方网站查阅如何利用。同时,我的blog中也会有和渐进加强相干的文章,接待人人定阅。
把上面两个对象连在一起把他们变成一个整体所有的CD操作都是通过这个类的这个需要仔细看文档了举个不恰当的例子就像三个人收拾衣服一个人负责衣服的存放位置(NSManagedObjectModel)一个人负责把衣服分类冬天穿夏天穿等(NSPersistentStoreCoordinator) AD: iPhone文件系统NSFileManager讲解是本文要介绍的内容,主要是通过iphone文件系统来学习NSFileManager的使用方法,具体内容来看本文详解。 特别是在校的学生,都存在一个小小的尴尬——虽然学习iOS开发的热情高涨,但由于没有多余的银子购买昂贵的Mac电脑而踟蹰不前。其实,针对初学者,如果想进入iOS开发的天地 众多研发人员积极参与到iOS平台的开发中来也就不足为奇了。 首先是基础,在汉昌的课程非常全面。从object—c到最后的毕业项目,基本上方方面面都涉及到了,我是一名非计算机专业的学生,起初学习还有点吃力,因为基础知识薄弱。经常像听天书 开始的时候甚至想放弃,不过想想自己的未来,只能咬牙坚持,课下就不停的缠着老师。放学就补基础,这些基础的东西没有速成的,只有刻苦努力。我是后来发现的,转变自己的心态,不要读书看资料当成一种痛苦 首先是基础,在汉昌的课程非常全面。从object—c到最后的毕业项目,基本上方方面面都涉及到了,我是一名非计算机专业的学生,起初学习还有点吃力,因为基础知识薄弱。经常像听天书 这个办法就是在WindowsXP或Win7的电脑上,使用vmware虚拟机来搭建一个真实的Mac OS X环境。 其实在培训的过程中,学习到最多的就是查资料的方式,当时感觉老师好坑,什么都不告诉我们,让我们自己去查,但是现在觉得还是要自己解决问题,这样才能理解的更加深入。 最后在做项目的时候一定要认真对待,毕竟这个直接和你的就业挂钩,这也是锻炼你实际操作的能力。 我也从简单的状态栏适配开始,先研究了下关于状态栏的适配,特总结如下,供广大网友一起讨论交流。 近期由于IOS7的发布,所以应用的适配潮可谓是都搞的锣鼓喧天,甚是热闹,因此呢,因适配IOS7而产生的问题也是铺天盖地的卷来, 其实在培训的过程中,学习到最多的就是查资料的方式,当时感觉老师好坑,什么都不告诉我们,让我们自己去查,但是现在觉得还是要自己解决问题,这样才能理解的更加深入。 我也从简单的状态栏适配开始,先研究了下关于状态栏的适配,特总结如下,供广大网友一起讨论交流。 众多研发人员积极参与到iOS平台的开发中来也就不足为奇了。 有办法利用自己手头的电脑立刻开始这个美妙旅程的。 近期由于IOS7的发布,所以应用的适配潮可谓是都搞的锣鼓喧天,甚是热闹,因此呢,因适配IOS7而产生的问题也是铺天盖地的卷来, 中国如今已然发展成为一个软件大国,软件人才的数量跃居全球之首。当然,在苹果平台的开发领域,也保持了相当强劲的发展势头。然而,很多初入iOS开发门槛的开发者, 同很多iOS开发者一样,我也是通过培训进入到iOS开发这个行业,开始没有打算培训,只准备自己学习一些计算机编程相关的知识,毕业时找一份编程相关工作(本人是信息与计算科学这个专业,是数学系)。
页:
[1]