1

我有 4 个 javascript 文件(每个文件用于一个 HTML 文件),并且 3 个函数在所有 4 个文件中都是相同的。我想找到一个平稳的解决方案,我可以以某种方式分别包含这 3 个函数......是否可以在 .js 中包含 .js?

4

5 回答 5

2
  1. 您可以有多个<script>标签:

    <script src="lib.js"></script>
    <script>
    // do stuff
    </script>
    
  2. 您可以使用jQuery

    $.getScript("lib.js", function() {
      // do stuff
    });
    
  3. 您可以使用诸如browserifyYUICompressorGoogle 的 Closure Compiler 之类的预处理器。

于 2012-12-15T17:09:09.440 回答
1

你可以看看这个关于异步加载 javascript 文件的很好的解释。这可以解决你的问题。或者查看有关如何在其他 javascript 文件中加载 javascript 文件的堆栈溢出问题。

但是,将您使用的所有内容包含在一个 javascript 文件中并在每个站点上加载相同的文件可能值得一试。这提高了性能,因为只需发出一个 http 请求即可加载所有 javascript,并且可以非常有效地缓存它(因此以后无需加载任何 javascript)。

于 2012-12-15T17:10:55.560 回答
1

你可以自己写这个,例如它在谷歌分析中工作:

(function(){
    var lastIncludedScript = document.getElementsByTagName('script')[0];
    var yourScript = document.createElement('script');
    yourScript.type = 'text/javascript';
    yourScript.src = 'path/to/script.js';
    lastIncludedScript.parentNode.insertBefore(yourScript, lastIncludedScript);
})();

或在功能中:

function includeScript( path ){
    var lastIncludedScript = document.getElementsByTagName('script')[0];
    var yourScript = document.createElement('script');
    yourScript.type = 'text/javascript';
    yourScript.src = path;
    lastIncludedScript.parentNode.insertBefore(yourScript, lastIncludedScript);
}

用法:

includeScript( 'path/to/script.js' );
于 2012-12-15T17:07:33.907 回答
0

在浏览器中包含来自其他 JavaScript 的文件有点慢。我会编写一个服务器端脚本,将所有相关的 JavaScript 组合并缩小到一个“文件”中,然后发送给客户端。

您的页面可以将参数传递给此脚本以选择需要包含的内容。

于 2012-12-15T17:09:02.387 回答
0

使用每个 html 文件中所需的正确 js 文件。这将解决您的问题。也可以为两个 html 文件添加包含一般功能的一个。这应该可以解决您的问题。

于 2012-12-15T17:07:53.627 回答