繁体   English   中英

如何从另一个加载一个JavaScript文件?

[英]How to load one JavaScript file from another?

如何从另一个JavaScript文件加载一个JavaScript文件,如CSS? 在CSS中我们使用write @import url("mycss.css");

有没有办法在JavaScript中做到这一点?

Javascript中没有@ import-ish函数/方法,但您可以简单地将脚本附加到<head>标记,如下所示:

var newScript = document.createElement('script');
newScript.type = 'text/javascript';
newScript.src = '/path/to/js/file';
document.getElementsByTagName('head')[0].appendChild(newScript);

或者就像埃德加在我之前提到的那样你可以使用jQuery。

是。 如果您想要纯JavaScript,则必须动态创建script标记,并将其附加到文档中。

是。 如果使用jQuery库,则可以使用$.getScript方法。

$.getScript("another_script.js");

仅仅因为没有人提到它,还有另一种选择,它不需要任何花哨的库或棘手的编码, document.write 原则上,它看起来像这样,虽然请参阅下面的警告:

document.write('<script src="myscript.js" type="text/javascript"></script>');

这将在完全解析脚本标记时执行,如果您将脚本标记放在头部,新脚本标记也将在执行一个标记之后的头部。 注意直接执行它而不是在加载文档时(如$(function(){})回调。这是我使用的:

(function(){
  function load(script) {
    document.write('<'+'script src="'+script+'" type="text/javascript"><' + '/script>');
  }

  load("script1.js");
  load("script2.js");
  load("etc.js");
})();

封闭函数就是不污染全局命名空间。

警告(以及为什么上面分解的'脚本')脚本标记中可能没有结束脚本标记,HTML解析器不知道它是脚本的一部分。 关于这个问题还有另外一个问题

除了eval字符串的能力之外,Javascript本身不提供任何模块化帮助。 但是,这是一个普遍的需求,大多数大型JavaScript框架都提出了自己的解决方案,最近,我们一直在努力在requirejs项目中标准化这些API。 如果你正在使用像Dojo或jQuery这样的框架,你可能最好学会使用他们的设施,但如果没有, requirejs就是一个轻量级的独立工具。 你基本上只是添加

<script data-main="scripts/main" src="scripts/require.js"></script>

到你的<head>部分,然后将你自己的javascript放在像这样的包装器代码中(从require.js站点窃取):

require(["helper/util"], function() {
    //This function is called when scripts/helper/util.js is loaded.

    require.ready(function() {
        //This function is called when the page is loaded
        //(the DOMContentLoaded event) and when all required
        //scripts are loaded.

    });
});

使用const dataName =require('./fileName.js');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM