【翻译】揭开HTML5的神秘面纱

简介:

写在前面的话:

  这篇文章摘自Mozilla官网,主要针对HTML5和本地应用发表了一些。没有设计到技术,所以基本是逐字翻译,但愿我蹩脚的英语水平能把大师的 Chris Heilmann的思想整理明白。

原文地址:https://hacks.mozilla.org/2012/11/html5-mythbusting/

原作者:Chris Heilmann

===========================================================

以下是译文全文:

揭开HTML5的神秘面纱

现在关于HTML5的“准备就绪”的讨论有很多,但都是基于一些错误的假设。这导致了HTML5被蒙上了一层神秘面纱,并且人们不加求证的一次又一次传播。

HTML5性能不佳吗?

  人们最想知道的关于HTML5的问题便是性能。但是有一个不妥的地方是,人们在做比较的时候往往忘记了事实的本质,就像是在拿苹果和梨做比较,没有什么可比性。(没有别的意思)

  拿HTML5应用的性能和本地PC应用作比较,就好比是拿量身定做的衣服和商场里卖的衣服作比较。尽管量身定做的衣服可能穿着更合适并且看起来更特别,但是如果你把量身定做的衣服让另外一个人穿,可能就没有相同的效果了。

  这就是本地应用的特点—它们是在某个特定的环境下为了特定的目的而开发,并且这个范围是固定不变的—以后会越来越多。

  HTML5,就像它的定义一样,是一种不依赖于特定环境运行的web技术。为了在各种各样的web环境中成功运行它必须足够的灵活。根据HTML的定义,它应该为每个人所用而不是那些可以支付得起高昂硬件费用并且乐于被某个公司限制于固定环境的小范围人群。

  本地应用必须为每个设备和平台重新编写一遍代码,然而HTML5应用只需同一份程序便可以支持手机、平板、PC机。不需要受限于固定的范围和功能,HTML5应用可以测试所用技术在某个平台上是否支持,从而可以为性能更好、版本更新的客户端提供更高的体验效果,同时也兼容那些配置较低的设备正常使用。

  另一方面,本地应用在很多情况下需要升级,或者强制用户购买新的硬件,否则他们便不能使用该产品了。在这方面,出于更加灵活的观点,HTML5比本地应用表现的更优秀:不像本地应用那样使你不得不依赖于硬件,如果你不想花钱升级或者购买硬件,便无法提供服务。举个例子,IOS设备上自带的苹果地图,很多用户对此功能不满意,更想使用谷歌地图,但是却无法实现。(android程序无法在IOS上运行)

  HexGL是一款WebGL渲染的游戏(http://hexgl.bkcore.com/)。

  可以看到HTML5在PC机上的性能也是相当完美的。通过分析并改变飞行视图以高帧率运行3D游戏高速度竞技游戏这些技术,我们可以问一下自己了,HTML5的性能真的不佳吗?

  其实答案还与硬件访问技术有关。HTML5应用被IOS和android设备看作是二类公民,没有访问那些可提升性能部分的权限。IOS应用可以通过web view调用HTML页面,但是系统却阻止它像本地应用那样保持高性能运行,尽管它们使用着相同的规则。在android设备上,chrome和firefox浏览器都可以快速运行保持良好的性能,然而相比之下内置浏览器就像爬一样。

  Android设备上的内置浏览器使我们想起了90年代的IE浏览器,长久的一成不变以至于阻碍了互联网的发展—这也或许是Mozilla组织和firefox浏览器出现的真正原因吧。

  其实HTML5应用就像一辆F1赛车一样,它需要在真正的赛道上才能表现出真正的性能,它需要操作系统给予更多的资源支持,而不是像现在一样仅仅是围绕着系统在工作。

HTML5无法商业化吗?

  HTML5是基于开源的互联网技术的一个技术范畴。说HTML5无法实现商业模式就像是说互联网无法商业化一样。(这不是很讽刺吗?没看到各大新闻网站上挂着的广告吗?)

  纵观一下现在的情况,在一个封闭的应用商店出售你的产品是一个非常普遍的方式,而且你也会经常看到大量的宣传某个APP可以月入百万。然而事实上,大部分开发者都不可能通过应用商店里的单一一款APP谋生。而且随着创新越来越困难,很多开发者不再是开发单一的应用而是开发一系列相似的应用(会说话的猫、会说话的狗、会说话的驴子等等),这样应用就可以很快的被搜索到并且总是排列在搜索结果的第一页上。

  这就是封闭应用商店对于开发者来说最大的缺点:你的应用在互联网上没有一个固定的地址(就像网址一样),而且在应用商店之外就很难被搜索到了。你不得不手动在每一个商店上线你的应用,忍受一系列审核和冗长的提交流程,并且在上架商品后无法进行产品升级,除非你先暂时下架。

  HTML5应用在网上有一个地址(URL)。它也可以利用像Adobe PhoneGap之类的软件打包成为本地应用,可以运行在IOS或是android设备。反过来则是不可能的。

  对于开发者来讲到底什么是更好的策略,这个问题长久以来一直没有答案,把赌注压在应用商店里等待着被发现?或者是通过互联网扩散你的产品,同时想办法覆盖应用商店?

  事实上,很多android和IOS商店里的应用都是HTML5应用通过PhoneGap转化而成的。一个最大的例子便是金融时报把他们的应用打造为HTML5的,并且获得了比本地应用更多的利润。最近纽约时报也宣布跟进这一策略打造自己的web应用。

HTML5无法离线使用吗?

         因为HTML5应用是基于web技术的,所以人们会自然而然的认为必须保持在线才能使用。这个观点是错误的。HTML5应用有很多方式可以离线存储数据,最简单的便是通过现代浏览器普遍支持的Web Storage API。你也可以使用APPCache将应用本身存储为离线的,这个特性已经被除IE以外的其他浏览器支持。如果你的数据太复杂,Web Storage提供的功能无法满足,你也可以使用IndexedDB(在chrome和firefox浏览器上)或者WebSQL(在IOS和Safari浏览器上)。为更好的使用这些新特性,你也可以使用像LaWnchair这样的类库,这样你的开发工作将更加容易。

HTML5没有好的开发环境?

  有一件事情经常被提及,HTML5缺少开发工具。但事实上你很少听到这些声音从真正的程序员发出来,而是来自于想要通过购买工具软件来使他的程序员更加高效工作的老板,他们从来不会考虑到底是什么让一个程序员高效工作。这不是太奇怪了吗?

  HTML5开发的实质还是web开发,有很多优秀实用的开发环境可用。那么问题就又回到了对于web 的误解上。你不会开发一个外观和功能都和其他产品一样的产品,因为这将失去互联网的核心优势。你会开发一款适用于各类环境的产品,而不是只针对一个特定的平台。因此你的开发环境应该是一系列工具的组合而不是某一款很全能的工具。你可以根据你的工作需要从中选择一个或多个。

  互联网是一个非常成功的媒体,这基于一个事实:用户可以为互联网贡献内容,他们不必像程序员一样编写代码,只需要通过博客、CMS或者是一个简单的文本编辑器便可以制作一个他们的HTML页面。如果你是一个开发者,在你的工作过程中会遇到很多使用起来又舒服又高效的工具,但很少有某一个工具能兼具所有这些优点。一些开发者更喜欢使用IDE,像Visual Studio或Eclipse。另外一些开发者可能更喜欢所见即所得工具像Dreamweaver。但是绝大多数的开发者都使用过纯文本编辑器或是一些相似的工具。从Sublime Text、Notepad++到Linux系统上的VIM或者emacs,有很多你可以使用的工具,事实上这些工具每天都被成千上万的开发者使用着。

  当需要调试程序的时候,不得不说web开发者还是很幸运的,他们可以站在用户的角度来进行调试—浏览器—也可以成为很好的调试环境。在firefox浏览器上可以使用firebug插件,可以在运行的时候跟踪代码变化。另外还有Opera浏览器的Dragonfly、Safari和Chrome的Devtools,几乎所有的浏览器都有专为开发者准备的功能。Firefox的开发者工具相对来说走的更远,已不再是简单的debug工具,而是一系列专业工具。开发者可以根据需要进行扩展。

  现在我们也可以进行远程调试(跨平台调试)。这意味着我们开发者可以在自己的电脑上将程序的运行环境切换为手机。这样省去了编写代码、拷贝到手机上、安装程序、测试程序、发现错误这一系列过程。这无疑将加快我们的开发速度。

  Firefox 远程调试

  对于喜欢可视化编程的开发者,Adobe最近发布了他们的Edge suite,这款产品可以用所见即所得的方式开发HTML5应用,包括可以直接从Photoshop中通过拖拽完成编写代码。Adobe的Edge Inspect和PhoneGap使得一次在多种设备上测试和将HTML应用打包为IOS、android应用变得很容易。

  在打包和部署方面,Google发布了他们的Yeoman产品。这款产品可以通过一系列步骤打包和部署你的web项目并且让它们高性能运行。使用起来相当容易。

  总而言之,HTML5没有固定的开发环境,否则这个平台将会是个四不像。因为这是web开发,你可以选择最适合你的工具。

HTML5能做但本地应用不能做的事情

         其实,造成HTML5的神秘的原因是基于一个事实:被比较的两个对象,一个是专门针对这个平台设计开发的,而另一个是这个平台支持的。(比如IOS系统就是为IOS应用而准备的,它同时支持HTML5而已)。就像是比较游艇和气垫船的性能一样,你会得到相似的结论。(在水面上气垫船明显追不上游艇,但是气垫船却是水陆两用的)。更加值得一提的是,HTML5有一些特性表现很优秀,而本地应用却无法做到:

         编写一次,多处部署—HTML5可以运行在浏览器上,无论平板还是PC,而且也可以编译成本地应用来支持IOS和Android 设备。反过来是不可能的。

         通过互联网分享—因为HTML5应用有它的地址(URL),所以可以通过互联网被分享,并且可以通过搜索引擎搜索到。你不需要到一个商店中在一堆应用中找它。你的应用越被大众喜欢,得到的链接越多,就越容易被发现。

         基于多个厂商共同制定的标准—HTML5标准是很多家有影响力的企业共同制定出来的成果。这些企业影响着互联网发展的方方面面,所以不会把你引入错误方向的。

         成千上万的开发者—在过去的几年中凡是从事web开发的人都在准备着编写应用。所以这个群体将会发展的很壮大。

         开发工具很简单—只需要文本编辑器和浏览器,你就可以开始编写调试了。

         最小化、原子性的升级—如果一个本地应用需要升级,整个程序都需要被重新下载一遍。(想要下载最新版愤怒的小鸟吗?你得花费23MB流量,太痛了),HTML5应用可以把需要的数据离线存储,只更新必须的部分。这样你可以完成无痛升级。

   简单的授权方式—你在安装本地应用的时候,首先会被询问是否授权访问你的硬件资源,一但授权后便不能再进行更改了。有时候你会有疑问(它怎么要这么多权限呢?),这样会不会泄露隐私呢?而HTML5应用却不需要这样,它即时向你请求授权资源访问权限,(比如当程序需要调用摄像头的时候才向你询问是否允许使用该设备),你想要做更改也无需再升级或者重新安装应用。(只要它下一次询问的时候拒绝就行了)

         可适配运行环境—HTML5应用可以通过响应式设计在不同环境中提供不同的体验效果,不必编写多份代码。用户可以在手机、平板、PC上无缝切换应用,而不必为每个设备都安装一个不同的版本。

         上面这些是本地应用无法做到的。

打破硬件封锁,轻松商业化

         根据上面提到的,开发者没能够很明确选择HTML5的主要原因便是硬件的限制。IOS设备不允许其他内核的浏览器在上面运行,不允许HTML5访问摄像头、地址簿、震动控制、通信和短信,换句话说,移动设备的很多必需和好用的功能都没有对开发者开放权限。

         为了解决这一问题,Mozilla和其他一些组织创建了一套标准API来定义这些访问权限,这就是Web APIs。这套API允许浏览器通过一种安全的方式来访问硬件资源,从而打破这些限制。

         第一个实现这一API的便是大名鼎鼎的Firefox OS,在未来一年(2013)将会应用到移动设备上。使用搭载了Firefox OS的手机,你开发的HTML5应用将拥有像本地应用一样的硬件访问权限。开发者拥有了对硬件的直接访问权限,便可以开发运行速度更快、更加重量级、体积却更小的应用。给用户带来的好处是他们可以使用更加便宜的设备,因为Firefox OS可以运行在配置很低的机器上,这样你的android手机将不必再刷机。

         在商业化方面,Mozilla正在构建自己的应用商店(marketplace for HTML5 Apps),该应用商店不仅仅接受提交的应用,同时也让你的应用能够通过互联网搜索到。为了让用户购买应用更方便,我们还与移动设备提供商合作,允许将账单转移到他们那里。这样没有信用卡的用户也可以购买应用,参与到移动互联网的革命中来。

HTML5还有多远?

         总而言之,HTML5正在飞速的发展,成为开发者的一个非常感兴趣并且可依靠的平台。我们不得不跨越的最大的障碍便是硬件访问权限,但通过使用WebAPI和PhoneGap,我们可以看到绊脚石已经比我们预料的小了很多。

         基于上述提到的HTML5的优势,我想开发者已经有了足够的理由投身到HTML5的开发中来,不必再花费时间为不同的平台编写不同的代码了。当然,如果你的目标就是要支持某一个平台,那你可以不必使用HTML5,但用你的这个决定来指责HTML5是毫无意义的。

         HTML5的开发不依赖平台和浏览器。如果你不拥抱HTML5,那你永远不会看到它的潜能。从历史上看,封闭的平台出现并发展,同时互联网也依旧拥有着强大的生命力,它让你从世界各地获得上百万用户,你可以随时进行开发不必向任何人征求许可,你不必安装复杂的开发环境。这些促使人们进行互联网开发的原因,以前是,以后也是。并且没有任何人可以限制你,所以,来试试吧。


本文转自吕大豹博客园博客,原文链接:http://www.cnblogs.com/lvdabao/articles/3078687.html,如需转载请自行联系原作者

相关文章
|
7天前
|
前端开发 搜索推荐 UED
《HTML 简易速速上手小册》第6章:HTML 语义与结构(2024 最新版)
《HTML 简易速速上手小册》第6章:HTML 语义与结构(2024 最新版)
21 0
|
2月前
|
前端开发
前端秘法基础式(HTML)(第一卷)
前端秘法基础式(HTML)(第一卷)
|
10月前
|
存储 移动开发 前端开发
从发展历程到基础语法规则,一文读懂HTML技术!
从发展历程到基础语法规则,一文读懂HTML技术!
81 1
|
移动开发 HTML5
HTML5 学习的疑难问题
HTML5 学习的疑难问题
79 0
HTML5 学习的疑难问题
|
前端开发 开发者
Web前端开发笔记——第二章 HTML语言 第十一节 语义标签
Web前端开发笔记——第二章 HTML语言 第十一节 语义标签
Web前端开发笔记——第二章 HTML语言 第十一节 语义标签
|
移动开发 前端开发 JavaScript
Web前端开发笔记——第二章 HTML语言 第二节 基本标签
Web前端开发笔记——第二章 HTML语言 第二节 基本标签
Web前端开发笔记——第二章 HTML语言 第二节 基本标签
|
移动开发 API HTML5
史上最全的html5知识点(自用笔记二)
史上最全的html5知识点(自用笔记二)
史上最全的html5知识点(自用笔记二)
|
XML 移动开发 JavaScript
【青训营】- 值得关注的HTML基础知识
众所周知,html是前端刚开始学习时的第一门语言。然而,在我们日常的实际开发中,一直注重的是实践和应用。但是殊不知的是,很多小伙伴都忽略了很多关于 html 相关的基础入门知识。那么在接下来的文章中,将讲解 html 是什么,其发展历史又是怎么样的?还有 html 如何使用,以及如何写出更加语义化的 html 。 接下来我们来一起学习⑧~🧐
【青训营】- 值得关注的HTML基础知识
|
XML 存储 移动开发
【重构前端知识体系之HTML】2022,你还会来看HTML吗?带你重温亦或走进!
我在重构前端知识体系的HTML部分,2022年,你还愿意来看看HTML吗?我能写出花吗?
252 2
【重构前端知识体系之HTML】2022,你还会来看HTML吗?带你重温亦或走进!
|
Web App开发 移动开发 程序员
好程序员分享HTML5 发展史
  好程序员前端分享HTML5发展史,HTML5草案的前身名为WebApplications1.0,于2004年被WHATWG提出,于2007年被W3C接纳,并成立了新的HTML工作团队。   HTML5的第一份正式草案已于2008年1月22日公布。
1093 0