代码之家  ›  专栏  ›  技术社区  ›  Chris Ballance

Javascript文件依赖项-选择性加载资源文件并防止重复

  •  1
  • Chris Ballance  · 技术社区  · 16 年前

    这可能更像是一场哲学辩论,但以下是我的观点:

    • 两个控件共享一个Javascript资源库来调用webservice。
    • 它们通常一起使用,但并不总是。
    • 它们都引用的JavaCScript文件不容易分离。
    • 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

    3 回复  |  直到 16 年前
        1
  •  2
  •   Chris Ballance    16 年前

    使用以下JS&解决了我的问题;jQuery代码

    if (thisResourceLoaded === undefined) 
    { 
        $.getScript('/Webservice.asmx/js');
        var thisResourceLoaded = true; 
    }
    
        2
  •  1
  •   yoda    16 年前

    如果这些控件不需要在它们之间共享信息,您可以检查jQuery使用对象的方法,这可以确保如果您以不同的方式命名主对象,它将实例化(不确定这个词是否存在)两个引用相同对象的变量。

        3
  •  1
  •   Juha Syrjälä    16 年前

    可能最简单的方法是在使用一个或两个控件时包含整个js资源库一次。这应该由服务器端脚本(php等)来处理

    存储您<脚本src=“…”>标记到页面的标题部分。将新控件添加到页面时,请检查头部部件是否已包含所需的库,如果不包含,请添加库。

    例如:

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

    从页面加载时间的角度来看,最佳的方法是制作三个版本的资源库。然而,这很可能是矫枉过正。

    1. 版本包含控件A所需的部分
    2. 版本包含控件B所需的零件