编程技术是改变世界的力量。
本站
当前位置:网站首页 > HTML/CSS > 正文

实施Web标准明显落后 Safari成了新时代的IE?

gowuye 2023-10-13 10:11 20 浏览 0 评论

Web开发者诺兰·劳森(Nolan Lawson)近日撰文指出,苹果在实施Web标准上明显落后于其它的主流浏览器开发商,不少新兴的API技术在Safari上都不见踪影,Safari俨然成了新时代的IE。

以下是文章主要内容:

上周末,我参加了由诸多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。(乐邦)

相关推荐

python中调试pdb_python怎么调试
python中调试pdb_python怎么调试

当你的Python程序出现错误或行为不符合预期时,调试工具是一种非常有用的方式来帮助你找到问题所在。Python内置了一个强大的调试器模块,称为pdb(Pyth...

2023-10-22 12:21 gowuye

vue3+tsx开发语法详解_vue3+typescript
vue3+tsx开发语法详解_vue3+typescript

很多组件库都使用了TSX的方式开发,主要因为其灵活性比较高,TSX和SFC开发的优缺点就不介绍了,这里主要说一下将SFC项目改造为TSX的过程。安装JSX库pn...

2023-10-22 12:20 gowuye

对前端初学者的一些帮助(常见名词解释)
对前端初学者的一些帮助(常见名词解释)

1.HTML:HTML是超文本标记语言,“超文本”就是指页面内可以包含图片、链接,甚至音乐、程序等非文字元素。2.CSS:主要用来设计网页的样式,美化网页;...

2023-10-22 12:20 gowuye

JAVA多线程详解(超详细)_java多线程菜鸟教程
JAVA多线程详解(超详细)_java多线程菜鸟教程

一、线程简介1、进程、线程程序:开发写的代码称之为程序。程序就是一堆代码,一组数据和指令集,是一个静态的概念。进程(Process):将程序运行起来,我们称之...

2023-10-22 12:19 gowuye

一文搞懂什么时候用 Runnable?什么时候用 Callable ?

今天我们看一道leetcodehard难度题目:统计可以被K整除的下标对数目。题目给你一个下标从0开始、长度为n的整数数组nums和一个整数k,返回满足下述条件的下标对(i...

优化重复冗余代码的8种方式_优化重复冗余代码的8种方式是什么

日常开发中,我们经常会遇到一些重复代码。大家都知道重复代码不好,它主要有这些缺点:可维护性差、可读性差、增加错误风险等等。最近呢,我优化了一些系统中的重复代码,用了好几种的方式。感觉挺有用的,所以本文...

高级 CSS 和 Sass:Flexbox、网格、动画等等!
高级 CSS 和 Sass:Flexbox、网格、动画等等!

Udemy-高级CSS和Sass:Flexbox、网格、动画等等!讲师:JonasSchmedtmann下载:口袋资源网高级CSS和Sass:...

2023-10-22 12:19 gowuye

我们现在正处于 JavaScript 消亡的边缘?
我们现在正处于 JavaScript 消亡的边缘?

每10年JavaScript都会发生一次改朝换代式的变革。在我看来,JavaScript当前正处于一次快速变革的开始,而这段时期未来可能会被称为Ja...

2023-10-22 12:19 gowuye

CSS预编译器三剑客及PostCSS_前端预编译css有哪几种
CSS预编译器三剑客及PostCSS_前端预编译css有哪几种

这篇文章包含两个部分,第一部分是个CSS预编译器:Sass、Less、Stylus,他们之间的对比,第二部分是现在大火的PostCSS。为什么会出现CSS预编译...

2023-10-22 12:18 gowuye

CSS预处理语言Sass入门_css3预处理器
CSS预处理语言Sass入门_css3预处理器

1.引言CSS3之前的CSS都大都是枚举属性样式,而编程语言强大的变量、函数、循环、分支等功能基本都不能在CSS中使用,让CSS的编程黯淡无光,Sass就是一...

2023-10-22 12:18 gowuye

“金三银四”,让我们愉快的开始准备Web面经吧:CSS篇
“金三银四”,让我们愉快的开始准备Web面经吧:CSS篇

前言又到了一年一度的“金三银四的季节了”。不过恐怕大家都有感觉,当下,正面临着近几年来的最严重的互联网寒冬,因此今天的“金三银四”肯定又是一场更为惨烈的江湖厮杀...

2023-10-22 12:18 gowuye

sass @extend(继承)指令详解_sass内置函数总结

在设计网页的时候常常遇到这种情况:一个元素使用的样式与另一个元素完全相同,但又添加了额外的样式。通常会在HTML中给元素定义两个class,一个通用样式,一个特殊样式。普通CSS的实现接下来以警...

Sass混合的使用_sas中如何合并两组数据

本节我们学习Sass中的混合,Sass中的混合是通过@mixin指令来定义的,混合允许我们定义可以在整个样式表中重复使用的样式,避免使用无语意的类。混合可以包含所有的CSS规则和任何其他...

css代码规范工具stylelint_代码规范

css样式的书写顺序及原理——很重要!很重要!很重要!为什么重要???概括讲就是,它涉及了浏览器的渲染原理:reflow和repaint还想知道更多为什么可以参考:https://blog.csdn....

CSS-in-JS 是恶魔还是天使?_天启四骑士是恶魔还是天使
CSS-in-JS 是恶魔还是天使?_天启四骑士是恶魔还是天使

有些人极为讨厌CSS-in-JS,单单提起这个名字都会让他们反感,总之就是拒绝二字。他们认为样式不属于JavaScript,而是属于CSS,并且CSS...

2023-10-22 12:17 gowuye

取消回复欢迎 发表评论: