2009-06-16 90 views
0

我目前有一个jQuery脚本页面,包含在我的MasterPage(我使用ASP.NET)的ScriptManager中。我所有页面的所有自定义脚本都放在此页面中。我知道有些人喜欢把它分成多页,但我更喜欢把它们放在一个地方。无论如何,我有一个$(document).ready(function(){ //do stuff// });在这个页面上。我所有的其他功能我的名字,然后在功能的document.ready地方,即:围绕这个效率jQuery:每页设置功能

$(document).ready(function(){ 
    Function1(); //necessary for page1.aspx, page2.aspx but not 3 or 4 
    Function2(); //etc., necessary for some but not other pages 
}); 

function Function1() { 
    // whatever, etc // 
} 

我的问题的中心。许多这些功能只在某些页面上有任何类型的应用程序,但不是全部。包括一些页面特定的编码,比如说,确定我们在做什么页面,然后如果我们在正确的页面上,继续并执行这个功能,还是不重要?我的印象是这并不重要,但我想确定。

感谢

回答

1

您可能会考虑将所有内容放入外部.js文件中。然后浏览器只需要下载一次代码。

如果这些功能在不需要它们的页面上导致错误,则应该只在需要它们的页面上包含它们。

否则,这取决于执行功能需要多长时间。如果不是很长,我会说不用担心。通过添加一堆if语句来引入脆弱性是不值得的。

1

我不能说,如果这是一个明确的答案,但在任何项目中,我尝试中,显示为小编码尽可能不相关到该页面,其中可能。

因此,在JQuery的情况下,我只会通过执行服务器端检查来显示该页面所需的JavaScript代码。

但我想这将取决于你使用的代码有多大,如果它是jquery中的一小行代码,那么我不认为你真的会失去,但如果你有很多在那里的逻辑,那么我会建议每页打破它需要它。

+0

将会有一个实际的方法来解决这个问题,如var path = window.location.pathname;然后在每个函数的开头解析路径变量?或者我会更好地分解成几个.js文件?另外,如果我做了后者,我将如何在每页基础上添加那些w /我的脚本管理器在主页上? – Jason 2009-06-16 17:06:44

+0

我不太确定你的脚本管理器是如何工作或ASP的,我主要是一个PHP开发人员。根据文件的设置和数量,我将使用if语句或开关来计算页面,然后输出html以包含脚本。做客户端没有太大的伤害!有很多方法可以真正包含你的文件,我不能真正说出哪些是最适合你的。在200行(到目前为止),我会说在每个页面中包括它并不是太多的问题。 (但是这真的取决于网站的使用情况 - 如果它得到很多用户,也许你想节省带宽) – 2009-06-16 18:59:00

1

根据页面特定功能的数量,它可能很重要。

如果您有少量的额外数据,那么您将看不到任何明显的性能下降。但是,随着代码库的增长,维护该代码可能会变得很糟糕。

此外,由于流量增加可能会增加带宽上的额外成本,因此在每个页面请求中,您都会在网络中增加额外的位数。

1

是的。它很重要。真正的问题是这些功能有多复杂。如果您认为检查函数是否需要的代码比运行代码更耗时,那么这不是必需的。

这就是您需要问自己(或测试)的问题:测试是否需要该功能或仅需要运行它们需要更长时间?