【发布时间】:2013-01-10 23:38:10
【问题描述】:
我是 RequireJS 的新手。我在 Knockout.js 中编写了许多自定义绑定,并希望使用模块将它们拆分。
我现在的代码布局是:
/
default.html
js
code.js
require-config.js
lib
/require.js
bridge
bridge.js
bindings1.js
bindings2.js
bindings3.js
我想从 default.html 加载 bridge.js 并将其加载到所有绑定文件中。我尝试使用 require 函数加载 bridge.js 或使用内联 js。
我的 require-config 很简单:
require.config({
baseUrl: '/'
});
在 bridge.js 中,我在使用相对路径加载文件时遇到问题。我试过了:
require(['./bindings1', './bindings2', './bindings3'], function () {
console.log('loaded');
});
但这只是使用路径 baseUrl + 'bindings1.js',例如。我在 bridge.js 中尝试了各种迭代。我唯一的成功是如果我写了整个路径:
require(['js/bridge/bindings1', 'js/bridge/bindings2', 'js/bridge/bindings3'], function () {
console.log('loaded');
});
但这不是我想要的。这似乎是一个非常基本的用例,我想我可能误解了相对路径的工作原理。
谢谢
【问题讨论】:
-
它与您设置的
baseUrl相关。例如:如果你设置了baseUrl: '/js/lib/bridge',那么你可以使用:require(['bindings1', 'bindings2', 'bindings3'] -
对,但我还有其他代码要从其他路径加载。我的理解是,如果愿意,您可以使用“./”从与当前 js 文件相同的“目录”加载 JS 文件。 requirejs.org/docs/api.html#modulenotes
-
对于在 define() 函数调用中可能发生的 require("./relative/name") 调用,请务必要求将“require”作为依赖项,以便解析相对名称正确。您是否也尝试过要求“要求”?
-
@CristiPufu,这行得通。谢谢!为什么必须这样做?如果你输入一个快速的答案,我会接受它。我刚刚注意到的另一个选项是在 require-config 文件中设置路径。
标签: javascript requirejs