我正在使用requireJS来加载脚本。它在文档中有如下详细说明:
引用: 模块名称所使用的路径不应包含.js扩展名,因为路径映射可能是针对一个目录。
在我的应用程序中,我将所有脚本文件映射到一个配置路径中,因为它们在运行时是动态生成的(我的脚本最初是像order.js这样的东西,但变成像order.min.b25a571965d02d9c54871b7636ca1c5e.js这样的东西(这是文件内容的哈希值,用于缓存清除)。
在某些情况下,require会在这些路径的末尾添加第二个.js扩展名。虽然我在服务器端生成了动态路径,然后填充了配置路径,但我还必须编写一些额外的Javascript代码来从有问题的文件中删除.js扩展名。
阅读requireJS文档,我真的不明白为什么您会希望将路径映射用于目录。这是否意味着可以以一次调用的方式加载整个目录中的文件?我不明白。
在上面的例子中,我必须使用字符串"bean"(它指的是require路径),而不是我的直接对象(像其他人使用的
引用: 模块名称所使用的路径不应包含.js扩展名,因为路径映射可能是针对一个目录。
在我的应用程序中,我将所有脚本文件映射到一个配置路径中,因为它们在运行时是动态生成的(我的脚本最初是像order.js这样的东西,但变成像order.min.b25a571965d02d9c54871b7636ca1c5e.js这样的东西(这是文件内容的哈希值,用于缓存清除)。
在某些情况下,require会在这些路径的末尾添加第二个.js扩展名。虽然我在服务器端生成了动态路径,然后填充了配置路径,但我还必须编写一些额外的Javascript代码来从有问题的文件中删除.js扩展名。
阅读requireJS文档,我真的不明白为什么您会希望将路径映射用于目录。这是否意味着可以以一次调用的方式加载整个目录中的文件?我不明白。
有人知道是否可以强制要求停止在文件路径中添加 .js,这样我就不必绕过它了吗?
谢谢。
更新:根据要求添加了一些代码示例。
这是我的 HTML 文件内部(这是一个 Scala 项目,因此我们无法直接将这些变量写入 .js 文件):
foo.js.modules = {
order : '@Static("javascripts/order.min.js")',
reqwest : 'http://5.foo.appspot.com/js/libs/reqwest',
bean : 'http://4.foo.appspot.com/js/libs/bean.min',
detect : 'order!http://4.foo.appspot.com/js/detect/detect.js',
images : 'order!http://4.foo.appspot.com/js/detect/images.js',
basicTemplate : '@Static("javascripts/libs/basicTemplate.min.js")',
trailExpander : '@Static("javascripts/libs/trailExpander.min.js")',
fetchDiscussion : '@Static("javascripts/libs/fetchDiscussion.min.js")'
mostPopular : '@Static("javascripts/libs/mostPopular.min.js")'
};
然后在我的main.js
内部:
requirejs.config({
paths: foo.js.modules
});
require([foo.js.modules.detect, foo.js.modules.images, "bean"],
function(detect, images, bean) {
// do stuff
});
在上面的例子中,我必须使用字符串"bean"(它指的是require路径),而不是我的直接对象(像其他人使用的
foo.js.modules.bar
),否则我会得到额外的.js
附加。希望这样讲清楚了。