浏览器供应商是否针对jQuery优化了他们的浏览器
Do browser vendors optimize their browser against jQuery?
浏览器供应商是否针对jQuery进行了优化?
我知道这听起来很荒谬的反标准,但我可以想象浏览器供应商对他们的 JS 编译器/解释器中内置的 jQuery 代码进行了优化。
例如,假设JS编译器/解释器看到$('.blah> p'),浏览器可以说,嗯,我看到用户正在尝试抓取一个元素,而不是让jQuery做所有的浏览器检测,它可以只获取[实际的DOM对象],并立即返回$([实际DOM对象])。
猜测$
做什么不会破坏任何将$
用于不同目的的脚本。考虑这样的页面(相对于在野外可以找到的示例,这实际上是一个非常弱的示例,但我认为它仍然很好地证明了难度):
<div class="bar">
<div class="foo">
<div class="bar">
How will the browser know to select this div with the selector '.bar .foo .bar', without actually running this script the way it is designed?
</div>
</div>
</div>
<script>
window.onload = function(){
var x = $('.foo');
console.log(x);
console.log(x.selector) // '.bar .foo .bar'
};
</script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
var $ = function(){
return arguments[0];
};
$ = (function($){
return function(selector){
return jQuery('.bar ' + selector + ' ' + $('.bar'));
}
})($);
</script>
浏览器提前知道要选择哪个div 将超出优化范围。事实上,浏览器必须按照它设计的方式运行脚本,以便选择正确的div。
然而,许多浏览器将Javascript编译为稍微低级的语言,如Java或C++代码。然后,如果浏览器下载并缓存jQuery,一旦它将被缓存,它将在用户计算机上编译表单。这不是一个jQuery
特定的优化,因为它会发生在任何缓存脚本上,但它对于像jQuery
这样的大型脚本的优化更为重要。
目前没有浏览器供应商宣布这样的功能。
但是,这是可能的。您可以轻松地在JS引擎中存储最常用的jQuery版本的Javascript(IL/字节码,无论您在引擎中使用什么)以供参考解析,当传入函数与该签名匹配时,将其替换为本机版本。
我想你唯一需要考虑的是,你将花费多少时间来实现它,而不是与现代JIT引擎相比的速度提升。因为他们中的一些人已经将代码编译为某种本机形式,至少部分编译,所以不太清楚是否会有任何实质性的收益。
- 访问布局信息是否也会导致浏览器重排
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- 如何使用phaser使html5游戏在移动设备浏览器上运行
- 重新审视网站优化的经验法则:JavaScript在现代浏览器中仍然是必不可少的
- 微观优化,是不是被现代浏览器优化了
- 优化浏览器侧图像大小
- 在浏览器中优化后需要 JS R.js 错误
- 浏览器供应商是否针对jQuery优化了他们的浏览器
- 浏览器是否优化了 js 代码
- 优化加载时间,同时支持禁用JavaScript的浏览器
- 可以通过JavaScript在浏览器中优化PNG吗?
- 优化iPhone浏览器的Javascript/jQuery代码
- 为(潜在的)未来浏览器汇编语言优化优化JavaScript的最佳实践是什么?
- 关于浏览器缓存,为优化速度加载网站
- 浏览器(等)是否在内部优化它们对javascript对象属性的检索?
- 浏览器如何优化我的JavaScript
- 有没有优化JS/CSS文件的浏览器插件?
- RequireJS:优化的文件和旧的浏览器
- 我应该相信现代浏览器会为我优化代码吗?
- 本地存储是否具有浏览器的某种内部“优化”