2009-06-16 85 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

是的。它很重要。真正的問題是這些功能有多複雜。如果您認爲檢查函數是否需要的代碼比運行代碼更耗時,那麼這不是必需的。

這就是您需要問自己(或測試)的問題:測試是否需要該功能或僅需要運行它們需要更長時間?