日期:2014-05-17  浏览次数:20548 次

摘录与访谈: 《HTML5专业开发》

由Peter Lubbers、Brian Albers和Frank Salim编著的《HTML5专业开发》 (Pro HTML5 Programming)一书,旨在帮助开发者们构建能够挖掘当今浏览器全部能力的HTML5应用。

?

该书主要涉及领域有:

  • Communication APIs :探讨构建实时和跨源(cross-origin)通讯的两大基础: 跨文档通讯(Cross Document Messaging)与XMLHttpRequest Level 2。
  • Convas API :介绍有关动态生成与渲染图形、图表、图像和动画的API。
  • Geolocation API :使用这个API,用户便可共享自己的地理位置,并在Web应用的帮助下享用位置感知的服务(location-aware services)。
  • Web Sockets API :定义了一个全双工传输的通讯通道,它在Web之上通过单个套接字进行工作。
  • Web Storage API :探讨HTML5 Web存储(也就是DOMStorage),该API令在多个Web请求间持久化数据变得简单。
  • Web Workers API :该API为Web应用提供了后台处理的能力。
  • HTML5音频与视频 :这些是HTML里新添的元素,它们为开发者提供了一套通用的、集成的、脚本式的处理音频与视频的API,而无需安装任何插件。

Apress出版社特许InfoQ发布该书第六章《使用HTML5 Web Sockets API》 ,并介绍该书作者之一接受InfoQ的访谈。

InfoQ与该作者进行了一系列问答:

InfoQ:你好,Peter!能否简单介绍一下自己,并谈谈你们为什么会写一本关于HTML5的书?

Peter: 我在Oracle工作了大约8年,然后在2008年成为Kaazing的第四名员工。从WebSocket API与协议(作为TCPConnection ) 被加入到HTML5规范开始,Kaazing就一直涉入其中,并且对HTML5的发展起到了重要作用。早在2008年,我们就已经开始提供有关 WebSocket的培训了,那时还没什么浏览器想到要支持它。我们的WebSocket网关能够完全(并且迅速)地模拟标准,所以你在IE6这种老式浏 览器上也可以使用HTML5 WebSockets。

在Kaazing,我负责文档与培训的工作。 Kaazing的创始人(Jonas Jacobi与John Fallows)是我在Orcale的同事,我曾帮助他们编校了2006年Apress出版的《JSF与Ajax》一书。正是他们建议我们三人—— Brian Albers(Kaazing的开发副总裁)、Frank Salim(Kaazing的“编码机器”)和我——写一本有关HTML5 WebSockets的书,可是我们发现市面上并没有HTML5的书,而且有关HTML5开发的资源也很少。

本书不是HTML5的入门书,也不是回顾HTML历史的书。 现在,我想我们都知道HTML5是个大项目,而本书会帮助你使用目前大多浏览器已采用的简单而又强大的API。

InfoQ:HTML5是什么?它要解决什么问题?你能介绍一下HTML5的各个部分以及它们之间的联系吗?

Peter: HTML5不仅仅是HTML的更新换代,它已经孕育很久了。之前最新的HTML(4.01)还是10年前发布的!

当我们谈及HTML5时,实际上它指的是包括HTML、CSS和JavaScript在内的一套技术组合。比如说,HTML5引进了新的画布 (convas)和视频元素。虽然它们自身已经非常强大,但你需要将其与JavaScript和CSS一同使用,其全部能力方能显现。

HTML5讲究简单性。它的一个理念叫做“沿着脚印铺路(pave the cowpaths)” [译注:这里字面意思为“沿着牛走过的脚印铺路”,在这里的意思是,如果一种做法已在开发者中间被广为采用,那么与其禁止它或发明新的做法,还不如考虑接 受它并采纳为标准],这意味着它致力于让之前困难的事情变得非常简单。HTML5还讲究原生的(native)浏览器功能。在HTML5里,你可以完成之 前依赖于插件(如Flash和Silverlight)或者必须用复杂的JavaScript脚本才能做到的事情。比如,HTML5引进了原生的表单控件 类型(日期、拾色器)与表格验证、原生的套接字(用于全双工通信)、原生的绘图API(SVG、画布)以及内置的位置感知(使用Geolocation API)。

InfoQ:目前的浏览器对各种HTMl5 APIs的支持如何?你认为未来会如何发展?

Peter: 浏览器对HTML5功能特性的支持正在以惊人的速度迅速增加——这是十分令人振奋的。许多流行浏览器(如Chrome、Safari、Firefox以及Opera)已经能够支持75%到90%不等的HTML5特性了,而这个数字还在不断增加。

你可以通过html5test.com 或caniuse.com 网站来查询你所使用的浏览器支持哪些功能特性;这是检查飞速变化的HTML5支持情况的好地方。

即使是一直处于落后的IE(IE6仅支持3%,IE8支持28%),在IE9中也“翻倍了”,支持将近60%的HTML5特性。其中一些功能还有硬件优化,这将推动其他浏览器加入进来。

InfoQ:你们的书中介绍了好几种HTML5 APIs。你能否举一些例子来说明,它们将如何帮助开发者构建更好的应用?

Peter: 当然!Web应用已经越来越与桌面的功能不相伯仲。 比如,在Kaazing,一位非常有才华的同事Frank Salim刚刚使用WebSockets与画布(convas)开发了一款VNC客户端——这在几年前(或者几月前)是无法想象的。

大体说,HTML5便于我们开发出更具状态性和事务性的Web应用。你可以使用WebSockets直接连接到远程服务器,你也可以使用 Geolocation API开发出位置感知的应用,并将他们与Map APIs相结合。你可以使用SVG和画布(convas)开发出令人惊奇的动画游戏(2D;但如果你愿意构建自己的浏览器,也可以是3D)。

各个APIs都很强大,你只要将他们结合起来,就可以开发出非常棒的应用。比如,HTML5支持用新的应用缓存(Application Cache)来开发脱机应用,也支持客户端Web存储(甚至是持久化存储,称为localStrorage),那么当然,你可以将脱机应用与存储漂亮地结 合起来;你可以进行脱机检查,而不必依赖不保险的浏览器缓存能力(点击“返回”后,之前的页面就没了)。现在,用户可以按他们所习惯的方式来使用整个应用 了:尚未发出的数据被保存在客户端,待应用检测出你在线后,数据才被发到服务端。

InfoQ:你认为目前HTML5中还缺少什么?还应该添加些什么?是否有新的APIs出现?现有APIs有修改吗?

Peter: 当然,还有很多东西需要打磨,浏览器也需要关注于互操作性。我们不应忽视HTML5原始的设计理念。我觉得,对各种 APIs的二进制支持(跨文档通讯与 WebSockets)是需要改善的,还有对3D画布的支持也需改进。此外,不同特性的无障碍性(accessibility)还需改善。

WebGL 不仅将OpenGL引入到JavaScript中,它也创造了一个通用的二进制数据API。高速的3D API需要二进制缓存,所以有人提议新推出一套用于操作二进制数据的API,称为TypedArray。如果该提议被采纳,TypedArray将在 HTML5中无处不在。

InfoQ:人们如何开发HTML5应用?有哪些主要工具可用于开发、调试和测试应用?