Web开发者诺兰·劳森(Nolan Lawson)近日撰文指出,苹果在实施Web标准上明显落后于其它的主流浏览器开发商,不少新兴的API技术在Safari上都不见踪影,Safari俨然成了新时代的IE。
本文引用地址:http://www.eepw.com.cn/article/276903.htm以下是文章主要内容:
上周末,我参加了由诸多Web行业领袖发起的大会EdgeConf。大会设置了不少的研讨会,聚焦新兴的浏览器技术,大家围绕Service Worker、Web Components、Shadow DOM、Web Manifests等相关技术展开了热烈的讨论。
10多位与会者称得上Web社区真正的活跃分子。各家主流浏览器的代表均有出席EdgeConf,如Chrome、Mozilla、IE和Opera。大家也兴致勃勃,接连向主流浏览器开发商们发出诸如何时发出这样那样的API(应用程序接口)的问题。
“屋子里的大象”
倒有一家公司没有出席,他们可以说是没有人愿意提及的那个“屋子里的大象”。大家并没有直呼其名,而是称其为“某家加州公司”或者“某家水果公司”。研讨室中的笔记本几乎都闪耀着那家公司夺目的logo,但却没有一人敢于说出它的名字。没错,说的正是苹果。
Web开发者普遍觉得Safari落后于其它的浏览器,而身处像EdgeConf这样的会议,你对此甚至会有更加强烈的感觉,你会惊讶于它与其它浏览器的差距之巨。上面提到的API目前无一实施于Safari,苹果也似乎没什么意愿那么做。
即便苹果真的采用新出的API,他们也往往只是随便糊弄而已。就以IndexedDB为例,IndexedDB在5年多以前便被提出,2012年开始出现在IE、Firefox和Chrome上。而苹果直到2014年年中才推出IndexedDB,无奈他们的实施却出乎意料的糟糕,大家普遍觉得没什么用处。
如今,一年过后,苹果修复了IndexedDB数个大漏洞中的两个。他们声称IndexedDB不值得花功夫去做,因为它“派不上大用场”。要是浏览器支持方面做得一塌糊涂,当然没有人会去使用IndexedDB啦。
很难理解苹果为什么会那样。他们从不派人去参加Web相关的大会,他们的Safari博客也鲜有更新,因而在一年一度的WWDC(全球开发者大会)开幕之前,没有人知道下一代的Safari会长什么样子。感觉上,苹果俨然圣诞老人——一年降临一次给大家发些备受期待的礼物,至于派什么礼物就无从得知了。老实说,那些礼物近年来也越来越小份了,没什么惊喜。
近些年,苹果Web方面的战略最多只能说是“仁慈的忽视”。虽然凭借JSCore和全新的WKWebView,性能上有了巨大的提升,但各种新生的Web平台特性——线下存储、推送通知和“可安装的”网页应用,Safari却一个都没有。这让人容易将此解读为苹果故意破坏任何对其App Store商业模式的威胁,但这种说法似乎也说不过去,毕竟那部分业务基本收支平衡。另一种可能性是,他们只是在响应iOS开发者的要求——基本上就是:1)引入更多的原生API;2)快速,快速,快速。鉴于苹果一向对内部事宜三缄其口,真相究竟如何谁也说不准。
又一个IE?
事实上,苹果一直以来都不是Web的质疑者。2010年,乔布斯便曾公开讽刺Flash,称HTML5才是未来。苹果当时可谓Web的虔诚信徒。很多帮助网页应用追赶上本地应用的早期特性,如ApplicationCache、WebSQL、触控事件和触控图标,得到了开发者的热情拥抱,当中甚至有很多都源自苹果。
同期WebSQL遭弃用,被IndexedDB取而代之的时候,其实有不少的苹果员工站出来积极予以拥护,称其对于网页应用的高效运行不可或缺。从那些争论可以明显感觉得到苹果内部在IndexedDB胜出后的巨大失落感。讽刺的是,苹果几乎是给了开发者削弱其专有平台的各种工具,而反过来,开发者排斥WebSQL,则给了他们重新思考战略和叫停任何Web API新进展的机会。
Application Cache也面临着类似的情况,在不久的将来它可能会被Service Worker取而代之。苹果对于Web还很有兴致的时候,它一度赢得广泛的浏览器支持。不幸的是,它只是个匆匆推出的半成品。要是苹果还是跑在其它公司身后,恐怕Service Worker也会遭受IndexedDB般的命运。
现阶段,Web社区需要接受这样一个事实:Safari成为了新时代的IE。微软最近痛改前非,谷歌在Web领域一马当先,Mozilla一如既往地快步前行。而苹果则像是在一旁独自唱着悲歌。我们是时候公开探讨这个问题了,而不是显得很忌讳,避而不谈。苹果是世界上最具价值的公司,他们还是承受得起一些打击的。
何以应对?
那么,当一家完全控制iOS平台的主流浏览器提供商仍然坚守2010年的模式,表现得若无其事的时候,Web社区能够做些什么呢?我认为有三个主要的解决机制:
1)坚守2010年行得通的东西,并使用Polyfills来支持Safari。通过使用AppCache和PouchDB,你可以得到跟Service Worker几乎一模一样的特性。这种方案应该能够吸引绝大多数的Web开发者。另一方面,这也不失为倒逼苹果,让他们有动力去进行技术升级强化的好方法。
2)使用Service Worker等在Safari上不好使的技术,将其视作推动行业进步。阿莱克斯·拉塞尔(Alex Russell)在“可安装的网页应用”研讨会上发表了一个很好的观点:如果我们开发出了大量使用Service Worker的免费网页应用,而且这些应用在Android上运行得非常好,而在iOS上只能凑合着用,那苹果就会有兴趣采用Service Worker,支持该API。只不过,虽然整体来说这对于Web社区而言室最好的结果,但要说服开发者去编写只能覆盖一半受众的代码绝非易事。
3)为WebKit做贡献。Safari的核心部分毕竟还是开源项目,因而C++开发者没有理由不去亲自实施那些新生的API。该方案主要的问题在于,WebKit并非Safari,苹果还是可以决定不在他们的旗舰级浏览器实施WebKit特性。说回IndexedDB,它早早就获得了谷歌的完好实施,苹果前几年完全可以直接纳入谷歌的实施,但他们却迟迟没有行动,最终自己弄了个漏洞百出的版本。很难保证他们对于其它的外部贡献做出同样的事情。
总而言之,真不知道有什么合适的解决方案。
很多WebKit开发者目前在做的事情值得敬佩,但在我看来,面对苹果,目前最好的策略或许是来硬的,而非来软的。因此,我倾向于采纳上述第二点提到的拉塞尔的解决方案,即开始促进新兴的Web技术的推广。
如果Web社区能够开始构建出一个生机勃勃的网页应用生态系统,将苹果排挤在外,那苹果可能就会不得不像微软那样转而作出改变。不然的话,开发者们就得自甘生活在2010年代的Web当中,任由Safari成为又一个可怕的IE。
暂无评论哦,快来评论一下吧!