David Kaneda访谈:移动HTML5设计和开发

概要
David谈论了开发html5手机应用尤其是在WebKit平台上所面临的特有的挑战。他同时还列举了这个领域最新的一些研究以及他们发展的可能性。 

个人简介
David Kaneda是一位很有创造力的web技术专家,他创建了jQTouch,一种供移动web开发用的jQuery插件,以及Outpost,一种原创的Basecamp iPhone应用。David还通过多个微博来分享他在设计和开发方面的想法,其中有9-bits和WebKitBits。David目前是Sencha的创意总监。

这里是QCon San Francisco 2011,我们来和David Kaneda聊聊移动HTML5方面的话题。你好David,介绍一下你自己好吗?

当然,我是David Kaneda,现任Sencha的创意总监,我也是JQTouch的创建者,JQTouch是我在两三年前编写的,在早期是那种感觉类似本地应用框架的JavaScript库,另外,我还帮手了Sencha Touch的开发,该产品就是我们目前在为移动互联网打造的富应用。

是哪些原因让您产生了在移动设备上使用HTML5平台进行开发的兴趣呢?与传统的一些平台或是本地化应用相比,有哪些好处?

我是作为一名web开发者和web设计师入行的,所以实际上会从不同角度来看这个问题,当然,iPhone的问世令我超级兴奋,在iPhone问世之初,Jobs就赋予了web应用更丰富的内涵,我开始研究iPhone的浏览器,从那时起,我对WebKit有了专门的了解。也是从那时开始,我有了要开发几个iPhone应用的念头,接着我实现了一个本地化应用Outpost,这是一个为Basecamp开发的应用,之后,我开始考虑更多可做的事情。在开发Outpost时,实际上我有一位合作伙伴,他处理大部分的开发工作,我则是负责设计。在开始打算由自己来完成这些构建工作时,我一开始与Objective-C对比进行了一番研究,看看在浏览器中可以做哪些事情,最终结论是,我们可以在浏览器中构建出所有的东西。

您认为哪些浏览器技术更有生命力,更吸引开发者,比方说,是主题层(theming layer)、CSS这一类东西吗?

是的,所以在说到与本地化的比较时,很遗憾,我认为浏览器在大多数方面都有些落后于本地化的做法。在考虑速度、性能这一类问题时,它很难实现本地化的那种性能。但是,随着我们不断向前努力,随着每一个改进版本的推出,现在我们看到,设备所具备的能力已经大大超过从前,现在我们实际处在这样的一个点上,即就性能方面来说,浏览器和本地化基本已是不相上下了。除此之外,既然你提到CSS,作为一种主题层,我始终觉得CSS远远优于其他任何一种我曾见过的主题系统。Objective-C、任何都面向对象的系统都会强制你把主题置于类中,甚至是ActionScript、Flash一类的技术也是如此,而与此相比,web的做法是HTML结构、CSS样式和JavaScript功能的三者分离。我始终认为,在定制或是创建应用时,分离的做法要高效很多。

HTML5正在演变成一种巨大的规范集,您认为哪些技术更有吸引力?为什么?特别是在移动领域。

同样,作为以设计为中心的那类人,我个人觉得,任何一种与CSS3相关的改进都很令人期待。就CSS4规范来说,现在已有许多东西在用了,我在其中就发现了许多令人兴奋的东西,像变量、父引用等,这些东西都会出现在样式表中,现在和过去一年左右的时间里,我一直都在关注Sass和Compass这两种新兴的技术,这两种技术在创建CSS和样式表方面有着极大的用处。除了样式方面之外还有本地存储,我认为设备API总的来说是这一正兴起的规范最激动人心的部分,我不能完全确定它会置于HTML5之下还是会与之平起平坐,但它会是一起在发展的整个规范集的一部分。

现在有新的W3C工作组正在致力于设备API,比如说振动(vibration),或是通过JavaScript来访问振动一类的API。

正是这样,这显然是我希望快速发展的最大领域之一。我们已经有了一些东西,像在Android上访问摄像头、加速计,我相信可访问每样东西,不过还有很长的路要走就是了。我觉得没有什么理由可妨碍到我们把越来越多的东西暴露出来,就像我们通过浏览器暴露应用一样,只要大家有考虑到安全问题就会没事。

如何在移动平台上调试这类代码呢?比如说您提到的使用Sass来编写样式,这比在桌面上完成这类工作难多了。

我觉得,对于在移动浏览器上开发应用来说,特别是针对第一阵营中一些较新的浏览器来做开发,WebKit现在就特别受欢迎,你实际上可以在桌面上使用Chrome、WebKit inspector来开发和调试几乎所有的应用功能。就我个人来说,在创建应用时,我通常都是在桌面的浏览器内部开发出整个应用,等快到后期时,再把它装到设备上,看看是否存在差错并修正它们。不过在大多数情况下,相比本地化应用一类的东西,实际上我更愿意调试和测试web应用,在本地化应用中,你需要操心垃圾收集等这一类事情。

不过我想你得要格外小心精确的位置控制这一类东西的使用吧?有可能这在移动设备上是不可用的?

这要视情况而定,是这样,这始终取决于你的目标。若针对的是Android、IOS和Blackberry这些第一阵营中的浏览器,实际上存在许多很稳健的布局技术,我喜欢的弹性盒(flexible box)布局已被引入CSS2,现在在CSS3中又有了一些改进,不过它真的是一种非常稳固非常强大的布局系统。

您如何看待HTML5技术在桌面上的发展?相比移动领域,您如何看待两个领域的这种分支发展?我的意思是,比如说,在移动领域,因为设备较新,您能做到更快地采用新技术,强制用户使用最好的一些浏览器,但在桌面上,您还得支持所有版本的Internet Explorer甚至是某个版本的Internet Explorer。

确实如此,同样,这也和目标受众有关,我想很多企业都被迫支持Internet Explorer,所以很显然的,你不会在6和7版本中看到HTML5的开发,但随着IE的迭代,实际上您已经见到了特别是在IE9和IE10中已经有了对HTML5的一些像样支持,我想这种支持的增加会继续下去。如果您正在支持这些旧的浏览器的话,这始终取决于目标受众。但作为一种新兴的规范、看看日渐落伍的那些浏览器,再看看也许接下来