2009-11-24 98 views
1

這可能更多的是哲學辯論的,但這裏是我的:共享一個Javascript資源庫調用web服務JavaScript文件的依賴 - 選擇性加載資源文件和防止重複

  • 兩個控件。
  • 它們通常與對方結合使用,但並非總是如此。
  • 它們所引用的javacsript文件不易分離。
  • JavaScript文件不應該添加到應用程序中的每個頁面。

理想情況下,我會分開控件之間的web服務,並讓每個調用一個js資源文件,只針對他們需要的功能。

我不知道是否有我就是缺少一個明顯的更好的方式...

最簡單的形式,我有:

<html> 
<head> 
</head> 
<div> 
    <h1>Control1</h1> 
    <script type="text/javascript" src="/Webservice.asmx/js"></script> 
</div> 
<div> 
    <h1>Other stuff</h1> 
</div> 
<div> 
    <h1>Control2</h1> 
    <script type="text/javascript" src="/Webservice.asmx/js"></script> 
</div> 
</body> 
</html> 

編輯
我有jQuery的可用如果這提供了一個有用的方法給我。

使用ASP.NET

+0

你使用的是什麼服務器端腳本我的問題?例如PHP,JSP等? –

回答

1

解決了以下JS & jQuery代碼

if (thisResourceLoaded === undefined) 
{ 
    $.getScript('/Webservice.asmx/js'); 
    var thisResourceLoaded = true; 
} 
+0

這樣做。如果你不使用jquery,我會建議'dojo.require'。 –

+0

我覺得對我簡單地編輯它是不禮貌的,但是,我相信正確檢查undefined是使用typeof運算符if(typeof(thisResourceLoaded)===「undefined」){..' – metaomniliquant

1

如果這些控件不需要在它們之間共享信息,你可以檢查出使用對象的jQuery的方法,至極可確保在您不同的方式命名的主要對象,這將實例化(不知道這個詞是否存在)2個變量refeering同一個對象。

1

可能最簡單的方法是在使用一個或兩個控件時包含整個js資源庫。這應該由你的服務器端腳本(PHP等)

商店你<腳本SRC =「...」 >標籤頭頁面的一部分進行處理。在向頁面添加新控件時,檢查頭部件是否已包含所需的庫,如果沒有,則添加庫。 如果可能的話,請不要在每頁中多次包含同一個庫。

例如:

<html> 
    <head> 
    <script type="text/javascript" src="/Webservice.asmx/js" /> 
    </head> 
    <body> 

    <h1>Control1</h1> 

    <h1>Control2</h1> 

    </body> 
</html> 

最佳,在頁面加載時間觀念,是使資源庫的三個版本。然而,這很可能是矯枉過正。

  1. 版本包含了控制所需的零件一個
  2. 版本包含控制B所需要的部分
  3. 版本包含對控制A和B所需的所有零件

然後,你必須根據是否選擇正確的版本您正在使用控件A,控件B或兩者。