通常建议优化以将您的 javascript 合并为更少的部分并减少 http 请求的数量。在较小的站点上,您可以轻松地达到以下结构:
/js/jQuery-xx.js
/js/plugins.js
/js/app.js
即使在一个普通的站点(只有一些 jQuery 润色)中app.js
也会变得相当繁重。对于组织来说,很容易将实现分解为逻辑位:
..
/js/app-global.js
/js/app-contact.js
/js/app-products.js
/js/app-splash.js
现在作为单独的文件,在特定的上下文中要求它们是微不足道的,尽管它们的单独大小非常小,大约 1-3 kb 一块,所以在我看来,将它们重新组合成一个文件是非常聪明的担任app.js
。
但我app.js
突然想到,在文件中包含大约 20 个左右的 jQuery 选择器和其他大多数页面上未使用的 javascript。当这些 jQuery 选择器以大多数上下文中不存在的元素为目标时,它们触发这些 jQuery 选择器似乎浪费了 CPU 周期。
哪个是更紧迫的优化: • 减少 http 请求?• 减少未使用的jQuery 选择器?
我正在使用 Chrome 的审核工具进行分析,它建议减少对 javascript 文件的网络请求。任何测量膨胀的指南jQuery.ready(…);
?
更新
权衡所提供的证据,最简单的做法是将实现代码作为单个文件提供,然后使用路由系统激活不同的模块。就我而言,我只是连接到我已经构建的简单 php 路由器:
根.php
<script type="text/javascript">
var myApp = {
modules: {}
bootstrap: function()
{
<?php
if ( $pageId == 'contact' )
echo 'myApp.modules.contact();';
if ( $pageId == 'index' )
echo 'myApp.modules.splash();';
if ( preg_match( '~^help/~iu', $pageid ) )
echo 'myApp.modules.faq();';
?>
}
}
</script>
<script type="text/javascript" src="/js/jquery1.9.1.js"></script>
<script type="text/javascript" src="/js/jquery-plugins.js"></script>
<script type="text/javascript" src="/js/myApp.js"></script>
myApp.js
$(document).ready(function()
{
myApp.bootstrap();
//… global jQuery stuff …
});
// Define modules
myApp.modules.splash = function() {
$('#splash').click(
//…etc…
);
}
myApp.modules.faq = function() {
$('.faq').show(
//…etc…
);
}
myApp.modules.contact = function() {
$('.contact').bind(
//…etc…
);
}