HTML5 需要代言人来推广。有很多人都扮演了这个角色,我们 Mozilla 认为,将他们介绍给您是一个好主意,我们准备了一系列的访谈和短视频。形式很简单 - 我们会向这些专家提出 10 个问题,然后进行一个简短的视频访谈,让他们自我介绍并详细解答其中一些问题。
Leggi la traduzione in italiano
今天我们邀请的是 Remy Sharp,他是 Introducing HTML5 的合著者,也是英国布莱顿 Full Frontal 会议的组织者。
Remy 是 HTML5 领域中随处可见的人物之一。每当需要修复问题时,很可能在 GitHub 上就能找到 Remy 编写的代码来帮助您。他也是地道的英国人,从不拐弯抹角。
您可以在 Twitter 上关注 Remy,他的用户名是 @rem。
视频访谈
在 YouTube 上观看视频 或者从 Archive.org 下载:MP4 (98 MB), OGG (70 MB) 或者 WebM (68MB)
关于 HTML5 的十个问题,提问者:Remy Sharp
1) 仔细阅读“Introducing HTML5”之后,我感觉您更像是 API 导向型的人,而 Bruce 则更像是标记语言导向型的人。这种理解是否正确?您的背景和兴趣是什么?
非常准确。Bruce 邀请我加入这个项目,担任“JavaScript 大师” - 这是我在衣服下面穿的口号,经常会在“超人旋转”时露出 (通常让客户感到惊讶)。
我的背景一直是编码 - 即使在我很小的时候,我父亲就让我从旧的 Spectrum 杂志上复制代码,结果就是我花了很多时间打字,但总是出现一些随机错误,我永远无法调试。
随着我长大,我开始使用 C 语言编程,但在那个年代,SDK 的大小是 10Mb,要通过 14kb 的调制解调器下载,然后编译成一些非常奇怪的环境。不用说,我并没有走得太远。
然后 JavaScript 出现了。这是一种不需要任何特殊开发环境的编程语言。我可以在我的破旧的 Windows 95 机器上的记事本中编写代码,而且每台机器都自带运行时环境:浏览器。太棒了!
从那时起,浏览器带来的即时满足感让我改变了观念 - JavaScript 成为了我的选择。
从那以后,我也在后端环境中工作过(是的,我是一个 Perl 程序员,抱歉!),但无论如何,我总是以某种方式在前端工作和玩耍。然而,自从 2006 年我开始自己创业以来,这让我能够将重点几乎完全转移到前端,并专注于 JavaScript。基本上,在工作方面:我就像一只在泥潭里打滚的猪 [Ed: 对于非英语母语的读者,他指的是“快乐”]。
2) 从程序员的角度来看,HTML5 标准中最令人兴奋的部分是什么?您认为每个有抱负的开发者应该首先掌握什么?
对我来说,HTML5 最令人兴奋的方面是 JavaScript API 的深度。很难向普通人解释,实际上这个新规范的 HTML 版本并非主要由 HTML 构成,它主要是 JavaScript。
我无法指出规范中的任何一个特定部分,因为它就像问你喜欢 CSS 的哪个部分一样(:target 选择器 - 好吧,我可以说出来,但这不是重点!)。对我来说,最令人兴奋的是,HTML5 宣称浏览器是我们交付真正应用程序的平台 - 要认真对待这项技术。
如果一个有抱负的开发者想要快速地做出令人印象深刻的东西,我会建议他们尝试一下视频 API - 这绝不是最好的 API,但它很简单。
如果他们真的想用 HTML5 做出令人惊叹的东西,我会建议他们学习 JavaScript (我假设他们已经对 HTML 和 CSS 很熟悉)。阅读像 JavaScript: The Good Parts 这样的书籍,然后学习 JavaScript Patterns,并精通这门语言。也许,只是也许,然后再去购买 Introducing HTML5,它是由两个长相非常帅气 (裸体) 的人写的: http://flic.kr/p/8iyQTE 和 http://flic.kr/p/8iy6Z1 [Ed: 可能 NSFW,肯定令人不安]。
3) 在您的书中,您写了一个非常棒的 HTML5 视频播放器。您认为视频 API 哪个部分最有效?还有哪些问题需要解决?
媒体 API 非常简单,因此使用视频和音频变得非常容易。对我来说,大部分功能都非常有效 (只要您了解加载过程和事件)。
另外,非常巧妙的一点是,我可以捕获视频帧并在 canvas 元素中对其进行处理 - 可以做很多有趣的事情 (看看 Paul Rouget 的演示!)。
令人厌恶的是,规范要求供应商,即浏览器制造商,*不*要实现全屏模式。它以安全问题为由 (我可以理解),但 Flash 很久以前就解决了这个问题 - 那么为什么不在这方面借鉴他们的经验呢?如果原生视频无法全屏显示,它永远无法成为 Flash 视频的竞争对手。
话虽如此,我确实喜欢 WebKit 背后的人们无视规范,实现了全屏功能。规范只是指南,就我个人而言,我认为浏览器应该添加这个功能。
4) 我们来谈谈非 HTML5 标准,比如地理定位。我知道您在这方面做了一些工作,发现规范的某些部分工作良好,而另一些部分则不太理想。您能给我们一些见解吗?
除了 HTML5 规范之外,还有很多其他的规范,它们让浏览器变得真正非常令人兴奋。如果我们关注今天发布的浏览器 (包括 IE9),那么我们可以做很多十年前无法做的事情。
有一些“非 HTML5”规范实际上是 HTML5 的一部分,但出于某种原因被分开了 (这样它们可以更好地管理),比如 Web 存储、2D canvas API 和 WebSockets,但也有/真正/“与 HTML5 无关”的 API (NTDWH5API!),比如 querySelector、XHR2 和设备 API。我非常想尝试所有这些 API,即使它们在所有浏览器中还没有完全实现。
地理定位是精心挑选技术的绝佳例子。它挑战了这种观点:这项技术还没有完全实现。当我谈到开发者是否应该使用 HTML5 时,我经常会对这个问题喋喋不休。在支持它的浏览器中,只有 50% 的地理定位功能得到了实现,因为它们没有提供高度、方位或速度 - 所有这些都是规范的一部分。这是否阻止了像 Google 地图这样的主流应用使用这个 API? (提示:没有)。
编写规范的人们做了一件非常棒的工作,尤其是在很少的情况下,规范是在事后才编写的。XHR 就是其中之一,现在我们有了在新的浏览器中添加的稳定 API (例如,IE6 很烂,是的,我们都知道这一点)。这引出了拖放。这是 API 中的另类。理论上,这是一个非常强大的 API,可以让我们构建优秀的应用程序,但它的技术实现却是一团糟。 PPK (Peter-Paul Koch) 对这个规范进行了强烈的批评。它可以使用,但很混乱,而且功能不足。
总的来说,我发现“非 HTML5”规范参差不齐。有些在新浏览器中得到了很好的支持,而有些则根本不支持。SVG 已经存在很久了,现在借助于像 Raphaël.js 或 SVGWeb (一个基于 Flash 的解决方案) 这样的 JavaScript 库,SVG 变得真正可行。总而言之,与过去的黑盒子年代相比,如今 JavaScript API 有了更多可供选择。
5) 我们来谈谈 Canvas 和 SVG。Canvas 难道不是在页面中添加另一个基于像素的矩形吗?这和以前 Java Applet 很像。另一方面,SVG 是基于矢量的,因此它会是一个更自然的工具,我们可以用它来实现我们在 Flash 中使用的开放标准。您会在什么时候选择 SVG 而不是 Canvas,反之亦然?
画布在很多方面都与 Flash 绘图 API 类似。它不可访问,是一个完全的黑盒子。问题是,在西方,很多企业,无论对错,都希望他们的花哨动画在 iOS 上运行。由于 Flash 在 iOS 上无法运行,画布是一个绝佳的解决方案。
但是,您必须,必须,决定使用哪种技术。不要仅仅因为您看到一个 马里奥赛车演示 使用它就使用画布。看看每种技术的优缺点。SVG 和画布 API 不是竞争技术,它们是专门针对特定工作的锤子。
Brad Neuberg 很好地总结了每种技术的优缺点,我一直在推荐人们去看它(这里有 视频)。
所以,它实际上归结为
- 画布:像素操作,非交互式和高动画
- SVG:交互式,基于矢量
明智地选择,年轻的绝地武士!
6) 性能如何?大型画布解决方案是否非常慢,尤其是在移动设备上?这对游戏来说不是问题吗?如何解决这个问题?
嗯... 既是也是否。我正在完成一个项目,它有一个大型画布动画,它在移动设备上并不慢(并非针对移动设备设计)。它不慢的原因是由于画布动画的方式。它不需要以 60fps 持续更新。
性能取决于您的应用程序。评估环境、技术并做出明智的决定。我个人认为,在移动设备上使用画布进行高性能游戏还为时过早。我认为这些设备没有足够的性能来完成这项工作,但有一个隐藏的问题——设备中的浏览器还无法胜任。硬件加速会有很大帮助,但今天,现在,我认为我们不会看到像愤怒的小鸟这样的游戏用 JavaScript 编写。
也就是说... 我认真考虑过如何使用画布、DIV 和 CSS 的组合来复制像 Canabalt 这样的游戏。我认为这可能是可行的 ::扔下战书:
我认为我们的社区实际上可以从 Flash 社区学到很多东西。他们已经经历过这一切。试图让几年前的旧版 Flash 做一些突破边界的事情。像 Seb Lee-Delisle (@seb_ly / http://seb.ly) 这样的人正在为 Flash 和 JavaScript 社区做着惊人的教学工作。
7) 曾经是 HTML5 的功能,现在成为一个独立规范的是 LocalStorage 及其衍生物 Session Storage 或完整的 WebSQL 和 IndexedDB。另一件事是离线存储。在开发者圈子里,似乎关于何时以及是否使用 NoSQL 解决方案(客户端)是未来,存在着巨大的讨论。您的看法是什么?何时可以使用什么,以及有哪些缺点?
我个人喜欢看到无服务器应用程序。观察存储解决方案,我经常难以理解为什么不每次都使用 WebStorage。
在某种程度上,它就像 (在我有限的经验中) NoSQL,您查找一个键并获取结果。
同样,我认为浏览器中的 SQL 过于复杂。就像您试图使用 *您* 理解的存储方法,并将它强加到浏览器中。这似乎是为获得太小的收益而付出了太多努力。
从 API 角度来看,离线应用程序,即应用程序缓存非常性感。就像戴着巧克力帽子的性感一样。我们的应用程序可以在没有网络的情况下运行,或者在检测到离线时切换,这是一个非常强大的想法。唯一的问题是事件很糟糕。表示您的应用程序现在处于离线状态的事件需要用户通过浏览器菜单进行干预,告诉浏览器“在离线模式下工作”。这完全破坏了体验。更糟糕的是,据我所知,目前还没有计划让离线事件正常触发 :-(
综上所述,cookie 对我来说已经完全过时。自从我找到 Web Storage API 以来,我还没有找到 cookie 的真正解决方案——而且 Web Storage 存在很多不错的 polyfill——所以使用该 API 真的没有风险。
8) 话题稍微改变一下,您构建了 HTML5shiv 使 HTML5 元素在 IE 中可样式化。这个想法激发了其他许多解决方案,使 IE6 能够与新技术一起工作(或实际上模拟它们)。这将如何结束?您认为为了完全支持 IE6 而编写更多代码是否值得?
这里有两件事
- 支持 IE6(提示:不要)
- Polyfill
IE6,说真的,我再次强调,看看您的用户。说真的。我知道项目经理会说他们不知道数据是什么,在这种情况下:找出答案!然后,一旦您掌握了使用统计数据,您就会知道您的受众以及他们支持的技术。
如果他们主要是 IE6 用户,那么添加带有旋转和舞蹈画布效果的原生视频将无法工作——即使使用 shims 和 polyfill 也无法工作。IE6 是一条老狗,它已经无法做到过去在鼎盛时期能够做到的事情了。但关于这个话题就到这里吧——关于是否为 IE6 开发的争论已经过时了。
Polyfill——这又是另一回事。它们并非为了支持 IE6 而存在,而是为了让浏览器满足您作为开发者的期望。但是,我会要求您在使用它们之前仔细考虑一下。这些脚本的目的是在那些旧浏览器中插入缺少的 API。“旧浏览器”并不一定意味着 IE6。例如,Web Sockets API 有一个通过 Flash 实现的 polyfill。如果原生 Web Sockets 不存在,Flash 会填补空白,但 API 以完全相同的方式公开,这意味着您不需要修改代码。
我认为人们不应该仅仅为了好玩而引入脚本。您应该考虑您想要实现的目标,并决定 X 技术是否合适。如果是,并且您知道(或预计)您的用户拥有不支持 X 技术的浏览器——您应该用 JavaScript 插入它还是应该考虑其他技术?
同样的论点也适用于当有人添加 jQuery 只是为了给一个元素添加或删除一个类时。这根本不值得——但显然,这位特定的开发者并没有真正理解他们需要做什么。那么教育是解决方案吗?我希望如此。
9) 如果人们想学习 HTML5,您会把他们送到哪里?哪些教程教会了你很多东西?对感兴趣的人来说,应该在哪里闲逛?
HTML5 Doctor - 当然! :)
我倾向于也让大家访问我的 http://html5demos.com,仅仅是为了鼓励大家查看源代码,并进行一番 hack。
至于哪些教程教会了我很多东西——说真的,我从 HTML5Doctor.com 学到的东西最多。Bocoup 的人有一些非常棒的 JavaScript / API 教程 http://bocoup.com。除此之外,我实际上花了很多时间浏览规范,寻找我以前没有见过的内容,并用棍子戳它们。
10) 您宣布您正在专注于构建一个框架,使 WebSockets 变得易于使用。进展如何?您认为 WebSockets 未来将用于什么?换句话说,为什么如此着迷?
专注是一个强烈的词 ;-) 但确实如此,我开始着手开发一个产品,它将 Web Sockets 抽象到一项服务中。并非仅仅是 API,因为它太简单了,而是服务器设置:创建会话、用户控制流程、等待用户等等。
这项服务叫做 Förbind。瑞典语中的意思是“连接”,即连接您的用户。目前还处于早期阶段,但我希望本月将 alpha 访问权限发布到 forbind.net。
我过去曾在金融网站工作,实时数据是金蛋:一有数据发布就获取。现在,它在浏览器中以原生形式可用,我对此非常感兴趣!
此外,我喜欢匿名用户的理念。我创建了一些演示,用户可以在其中贡献一些内容,而无需真正泄露自己的身份,当用户出现时,您会开始看到人们在没有真正尝试的情况下有多么有创造力。当然,你会看到很多画出的鸡巴,但你也会看到一些令人印象深刻的想法——例如,我的企业 404 页面允许人们留下绘画,其中最令人印象深刻的是一个超级马里奥,栩栩如生。匿名用户真的让我感兴趣,因为生活有时会变得很灰暗,一个陌生人很容易给你带来灵感。
您是否认识任何人,我可以为“HTML5 人物”进行采访?在 Twitter 上告诉我:@codepo8
关于 Chris Heilmann
HTML5 和开放网络的布道者。让我们一起解决这个问题!
3 条评论