我写了一个使用require.js的backbone.js应用程序,并使用models /,collections /等分解。然后我写了另一个应用程序,它取决于第一个应用程序(以及其他一些东西。文件的布局如下:
/scripts/appA/
models/
collections/
views/
/scripts/appNeedsA/
models/
collections/
views/
我需要什么才能要求appA?以下似乎合乎逻辑,但不起作用。如果我使用../../appA,那就找到了appA,但由于root是错误的,因此无法找到IT的依赖项。
define(
['underscore', 'backbone', '../appA'],
function (_, Backbone, appA) {
...
}
答案 0 :(得分:2)
这可能不是你希望的答案,但是,这是一种方法:
https://github.com/busticated/RequireLoadingExample
我们的想法是使用消费应用程序将使用的路径定义您的模块deps,然后在消费的应用程序中适当地别名路径。
在我的示例中,我有一个顶级的main.js文件,该文件同时包含app1.js和app2.js模块。这两个模块都依赖于它们自己的子目录中的模块 - 例如app1.js使用一个/ mods / a.js和一个/ mods / b.js。我有另一个main(main-one.js)文件,它位于一个/目录中。该文件调用:
require.config({
paths: {
'jquery': 'libs/jquery',
'one': '.'
}
});
所以现在当app1.js加载时,一个/ mods / a.js路径被转换为./mods/a.js并被发现/加载而没有问题。
您应该能够将我的仓库分叉并加载index.html&在js控制台打开的浏览器中打开one.html以查看它是否全部工作。
希望它有所帮助!
答案 1 :(得分:0)
正确的解决方案是:
define(
['underscore', 'backbone', 'appA/views/whatever'],
function (_, Backbone, appAWhateverView) {
...
}
并将require.config路径设置为包括:
require.config({
paths: {
appA: '../appA'
}
});