2011-07-02 61 views
0

可能重复:
When should I use Inline vs. External Javascript?JavaScript添加到页面或外部JavaScript文件

我有一些javascript变量我在JavaScript中使用(即外部JavaScript文件。)

这个javascript变量是页面特定的,每个页面和用户都有所不同。

在任何其他JavaScript文件中,这些文件意味着额外的http请求或将其包含在页面的html内容中,使页面膨胀,会更好吗?

我喜欢分离,但希望做所有事情来最大限度地提高性能,所以要么增加html页面大小,要么增加额外的http请求。

我问这个问题的性能/优化方面。

对此有何意见?

回答

0

你可以有2个版本的应用开发释放的。
在你的开发版本中,你并不真正关心脚本的数量,而你的发布版本应该通过合并所有脚本,缩小它并对它进行压缩来优化。

+0

JavaScript变量因用户不同而不同,所以这种方法不能工作 – amateur

1

您可以通过几种不同的方式来做到这一点。一种方法是将数据包含在主脚本附带的对象中,并且每页都有另一个对象。 喜欢的东西

var data = { 
"page1": { 
    "title": "blah" 
}, 
"page2": { 
    "title": "different blah", 
    "users": [...] 
} 
} 

或者你可以做一个配置装载机。 在每个HTML页面包括

<script src="loader.js" type="text/javascript"></script> 

,其中将包括像这样

// if the page was blog.html page would equal blog 
var page = window.location.href.match(/\/(\w+).html/)[1]; 
var s = document.createElement("script"); 
s.src = "/path/to/javascript/" + page + ".js"; 
s.type = "text/javascript"; 
document.getElementsByTagName("head")[0].appendChild(s); 

这可以装载任何其它数据的特定页面的需要,如果在一开始就做会沿着侧大多库工作onReady的等效像

jQuery(function() { 
doStuff(); 
}) 

对于这种方法工作,你就只需要保证数据在每个文件是unifo rm中的数据是包含的。

var pageData = { ... }; 

这两种方法应该给你一点想法,想出一个解决方案。

0

如果数据因用户和页面而异,那么浏览器不能有效缓存它们,因此将它们放入外部文件不会从浏览器缓存中受益,事实上,您将明确地必须阻止该文件从获取缓存。我建议你把它放在实际的网页上。如果可以的话,把它放在网页HTML之后,这样可以先渲染。

相关问题