一个使用require.js的Backbone.js应用程序依赖于另一个:如何包含子应用程序?
我编写了一个backbone.js应用程序,它使用require.js,并与models/、collections/等分离。然后,我编写了另一个应用程序,它依赖于第一个应用程序(以及其他一些东西)。文件的布局如下:一个使用require.js的Backbone.js应用程序依赖于另一个:如何包含子应用程序?,backbone.js,requirejs,commonjs,Backbone.js,Requirejs,Commonjs,我编写了一个backbone.js应用程序,它使用require.js,并与models/、collections/等分离。然后,我编写了另一个应用程序,它依赖于第一个应用程序(以及其他一些东西)。文件的布局如下: /scripts/appA/ models/ collections/ views/ /scripts/appNeedsA/ models/ collec
/scripts/appA/
models/
collections/
views/
/scripts/appNeedsA/
models/
collections/
views/
我在需要appA的需求中添加了什么?下面的内容对我来说似乎是合乎逻辑的,但不起作用。如果我使用.././appA,它会找到appA,但无法找到它的依赖项,因为根是错误的
define(
['underscore', 'backbone', '../appA'],
function (_, Backbone, appA) {
...
}
这可能不是你所希望的答案,但有一种方法: 其思想是使用消费应用程序将使用的路径定义模块DEP,然后在消费应用程序中适当地别名该路径 在我的示例中,我有一个顶级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,并且被找到/加载而没有问题
您应该能够在上面分叉my repo并在浏览器中加载index.html和one.html,同时打开js控制台以查看所有操作
希望有帮助!正确的解决方案是:
define(
['underscore', 'backbone', 'appA/views/whatever'],
function (_, Backbone, appAWhateverView) {
...
}
并将require.config路径设置为包括:
require.config({
paths: {
appA: '../appA'
}
});