高品质的音视频能力是怎样的? | Qcon 全球软件开发大会·上海站邀请函 了解详情
写点什么

jQuery 作者 John Resig:WebKit 就是浏览器引擎中的 jQuery

  • 2013-02-14
  • 本文字数:2697 字

    阅读完需:约 9 分钟

JavaScript 领域的神级人物,jQuery、《Pro JavaScript》与《JavaScript Secrets》的作者, Khan Academy 计算机科学学院的院长 John Resig,在看到 Opera 浏览器切换到 WebKit 引擎的新闻,以及 Twitter 上许多咬牙切齿的争论后,忍不住在自己的博客发表了一番见解,英文原文在此。他觉得大家对这件事的反应让他感觉回到了 2008-2009 年,而现在已经是 2013,Chrome/Chromium 团队已经通过自己的成绩向大家证明了当使用 WebKit 的时候,可以不用担心发生停滞的步伐或者创新的缺失,反而还能在实现通用 Web 标准的时候少花很多时间。他还认为,WebKit 在这一点上发挥的作用,就像 jQuery 对 JavaScript 一样。

在 Opera 切换浏览器引擎这件事上,John 总结了他见到的几种典型言论,并一一加以点评:

浏览器切换到 WebKit 会导致浏览器引擎发展停滞

很明显这不是真的。KDE 创立了 KHTML,在 KHTML 的基础上 Apple 创立了 WebKit,而 Google 在它的基础上创立了 WebKit/Chromium。我相信任何人都能指出,相比 Safari 来说,Chome/Chromium 比 Safari 更好,而 Safari 比 Konqueror 更好。Chrome 团队已经证明了在选择使用 WebKit 时,作为 WebKit 的项目贡献者,他完全有能力将 WebKit 驶向你想要去的方向(一般来说是去更好的方向)。我完全相信拥有高素质开发团队的 Opera 也会做类似的事情。他们完全可以在 WebKit 上实现相当数量的 Opera 独有特性,这些特性之后又非常可能会流向其他也使用 WebKit 作为引擎的浏览器。

这会帮助 WebKit 成为一个事实上的标准

我没看到比这更中肯的观点了——WebKit 已经是事实上的标准。比如,每个人都清楚浏览器早就实现了带有诸如‘-webkit’这样的特性。很显然,WebKit 成为事实标准这件事儿早已经深入人心。当然,Bugs 也是。WebKit 是一个由许多浏览器厂商贡献代码的公共代码库,然而,每个浏览器厂商都可以改变他们自己的代码分支。我认为已经拥有事实标准的 WebKit 的 bug 们肯定会被浏览器厂商修复,但引擎中有 bug 并不代表浏览器厂家没有修复能力——他们可能故意不去修复这些 bug(就像浏览器厂家们目前正故意克隆那些 -webkit 前缀一样)。

就像 JavaScript 库一样,事实上大家都已经把 jQuery 当作了标准。但是这并没有导致发展的停滞。这还导致出现了很多构建在 jQuery 之上的,高层流行框架的产生,比如 Twitter Bootstrap HTML5 Boilerpalte ,和 Backbone.js

这会妨碍 Opera 影响 Web 标准的能力

我不认为 Opera 切换到 WebKit 会导致这个情况发生。但我确实看到 Anne van Kesteren 从 Opera 跳槽到 Mozilla 确实是 Opera 推进 Web 标准能力的巨大打击。但我对内幕一无所知,但是如果他的跳槽是源自这次浏览器引擎的切换,那么 Opera 影响 Web 标准的能力确实遭受到了损失。

Opera 切换到 WebKit 是在走下坡路 /Opera 份额太小,如果 Firefox 或者 IE 切换到 WebKit 那会是一个大问题

我认为有一点已经非常清楚了:目前 WebKit 在移动端已经非常明确的大获全胜。包括即将切换到 WebKit 上的 Opera Mini/Mobile,WebKit 几乎是市面上绝大多数移动浏览器所选用的唯一渲染引擎。如果任何其他浏览器想要在移动世界占据一席之地,那它必须和 WebKit 在功能上保持一致。让我们在此得到一个逻辑上的结论:在移动世界已经被 WebKit 统治的情况下,为了保持同步,Mozilla 和 Microsoft 将会感受到巨大的压力来迫使他们将自己的浏览器也切换为 WebKit。Google 已经通过 Chrome 证实了使用 WebKit 并不会导致发展停滞,其他公司更没有理由不来继续打造 WebKit(有可能会创造 WebKit 的混合体,比如 WebKit+IonMonkey)。

这些问题都归结到这个大问题:他们(Mozzila,Microsoft)应该切换引擎吗?

老实说,在这一点上,对 Mozilla 和 Microsoft 来讲,这成了一个商业问题,或者是工程问题。如果你的一些开发者要花他们所有精力去实现别人正在实现的相同标准,那么切换到一个公共的代码库(指 WebKit,编者注)将会解放你的劳动力,让你可以做点儿别的事情。你可以看到 Chrome 的例子:他们解放出的生产力全面投入到了性能的竞赛上。这个打造最快浏览器的比赛促进了大家共赢的结局。

最后,我们一定要了解,WebKit 并不是一个完整的实体。他是一个有多家公司贡献代码的共享代码库。(从这方面来说,这和 jQuery 并不相同:几乎所有的 jQuery 代码贡献最终都回到它的主代码库,而 WebKit 的有些更新则只保留在分支之中)。使用一个共同的代码库并不意味着这是浏览器开发的一切,更不是浏览器开发的终结。在一个共享的代码库中仍然可以有持续不断的创新,它的性能也当然会一直提升下去。

在原文评论中我们看到,即便是这种重量级人物的发言,也会引来大量吐槽。大家赞同 John 对 WebKit 的认可,但是不少人对于 jQuery 的部分却不那么满意。用我们熟悉的词来形容,就是“楼盖偏了”:

mitch:我很了解 John 和 jQuery,所以我不得不承认这是一个负面评论:我认为 jQuery 只是 JS 框架中的 IE7 而已。所有我见到在使用 jQuery 的人都把代码搞的一团糟,毫无结构可言。毫无疑问,jQuery 非常强大,但是它被自己局限住了。我可不认为 WebKit 是浏览器中的 jQuery。

michael camden :@mitch 我可不太赞同你的观点。jQuery 把代码结构的问题完全留给了程序员。jQuery 非常灵活,它只是并不像那些庞大的框架一样去强制要求你按照固定格式书写代码而已。

Mark V :完全同意 Mitch 对 jQuery 的观点。

jQuery 只是在 JS 的顶层做了一些事情,而为了这一点,它向很多短视的利益屈服了。而这是很多大的 JS 项目根本不看中的。如果所有的浏览器都向 WebKit 迁移,这可能还不错(比如没有 IE7-9 的烦恼了,真棒),但是长期来讲这伤害到了整个 Web 开发产业。

还记得 IE6 吗?当它刚发布的时候吗?当时它还是一个相当不错的浏览器。最起码比 IE5 强多了。所以当时所有人都在 IE6 下写代码,和 bugs 为伍,适配网页布局和引擎的怪异模式。一片祥和,不是吗?而 10 年后,它却成了 Web 开发行业里最沉重的负担。

当人们开始在单一环境下编写代码,并开始利用它的 bug 来实现各种特性的时候,标准就不再重要了。各种实现成了新的标准。

特别说明:Backbone 是可以脱离 jQuery 运行的。(编者注:这位仁兄最后还不忘吐槽。)

Rob :一个更恰当的比喻应该是 Linux 内核。Chrome 就像 Ubuntu,Safari 是 Fedora,Opera,我估计应该算 Mint 或者 Arch。

更多有趣的留言,大家可以点击此处查看英文原文

对于此事现在业界众说纷纭,JavaScript 的另一位大神 Douglas Crockford 怎么看?敬请继续关注 InfoQ 的后续报道。也欢迎各位留言讨论。

友情提示:InfoQ 中文站现在已支持 Google 和 MicroSoft 账户登陆。

2013-02-14 20:125337
用户头像

发布了 91 篇内容, 共 33.8 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

高并发系统SoEasy!Alibaba全新出品亿级并发设计速成笔记真香

Java 编程 架构 面试 架构师

架构实战营 模块七 作业

一雄

作业 架构实战营 模块七

压箱底宝藏!程序员必不可少的8款办公利器

Jackpop

2021年最受欢迎的10款开源DevOps工具

Jackpop

从分子层面雕刻肌肉,新数学模型预测锻炼肌肉最优方式

脑极体

直播预告:京东云DevOps与JFrog制品库的融合

京东科技开发者

DevOps 制品库管理 运维开发

【LeetCode】数据流中的中位数Java题解

Albert

算法 LeetCode 9月日更

自动交Y机器人开发|市值机器人源码搭建

量化系统19942438797

两种定时任务调度器对比

xyu

定时任务 Go 语言

冒死上传!阿里内部最新版“SpringCloud Alibaba手册”细节拉满

Java 编程 架构 面试 架构师

Mybatis的工作流程及原理

咿呀呀

mybatis 9月日更

百度清风算法再次升级:必须严打低质下载站

石头IT视角

模块七作业

秀聪

架构实战营

在线JSON转BigQuery工具

入门小站

JAVA中的输入与输出

IT蜗壳-Tango

Java IT蜗壳教学 9月日更

连续两年的云上服贸会,一部会展行业的数智化启示录

脑极体

初恋永远想不到的性能架构(朋友圈)

人工智能~~~

Vue进阶(九十九):页面锚点至顶部

No Silver Bullet

Vue 9月日更

关于比特币和区块链的3件重要事项

CECBC

渗透测试入门指南之小白该如何学习渗透?

网络安全学海

黑客 网络安全 信息安全 WEB安全 渗透测试·

卖NFT表情包赚上百万,区块链技术终于找到了真正价值?

CECBC

Java从建表语句中提取索引信息, 索引名称,复合索引包含字段,索引类别(普通索引/主键索引/唯一索引/全文索引/空间索引)解决方案

张音乐

数据库 索引 9月日更

架构实战营 - 模块七作业

Julian Chu

架构实战营

【LeetCode】分割平衡字符串Java题解

Albert

算法 LeetCode 9月日更

用友YonSuite在基于六力模型的SaaS产品中位居业界前列

海比研究院

金融科技成为服贸会热议话题:数字化转型中如何保障金融安全

CECBC

Promise.race() 原理解析及使用指南

devpoint

异步 Promise 9月日更

架构实战营模块七作业-游戏商城异地多活

王晓宇

架构实战营

太棒了!终于有大佬把“消息队列”核心知识点全都总结出来了

Java 编程 架构 面试 架构师

linux之ssh-keygen命令

入门小站

Linux

Rust从0到1-高级特性-宏

rust 高级特性 Macros

jQuery作者John Resig:WebKit就是浏览器引擎中的jQuery_JavaScript_彭超_InfoQ精选文章