如何使用RequireJS获取脚本URL?

时间:2013-08-19 10:50:35

标签: javascript requirejs

只需使用<script />标记加载脚本时,就可以像这样检索脚本网址:

var scriptURL = Array.prototype.pop.call (       // get the last...
        document.getElementsByTagName ('script') // ...script tag on the page...
    ).src.split ('?') [0];                       // ...take 'src' attribute...
                                                 // ...and strip the query string

这有点像黑客攻击,但有时可能非常有用,原因有很多(例如,当有其他资源文件依赖于脚本并且您不想对路径进行硬编码时)。它的工作原理是因为在执行时,页面上存在的最后一个<script />标记就是您的脚本。

使用 RequireJS 加载脚本时,我不确定是不是这样。在 RequireJS 中是否有类似的方法从模块定义中检索脚本URL?

2 个答案:

答案 0 :(得分:9)

您可以要求module模块,该模块通常用于传递特殊的config设置:

define(['module'], function (module) {
  console.log(module)
}

这将为您提供一个对象,其中包含id和uri到模块

答案 1 :(得分:1)

要获取当前模块的URL,您可以在requirejs中使用以下脚本。

define([module/hello], function (hello) {
    var currentUrl = location.href;
    var moduleUrl = url+require.toUrl("module/hello.js");
    alert(moduleUrl);
});