Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
一个使用require.js的Backbone.js应用程序依赖于另一个:如何包含子应用程序?_Backbone.js_Requirejs_Commonjs - Fatal编程技术网

一个使用require.js的Backbone.js应用程序依赖于另一个:如何包含子应用程序?

一个使用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

我编写了一个backbone.js应用程序,它使用require.js,并与models/、collections/等分离。然后,我编写了另一个应用程序,它依赖于第一个应用程序(以及其他一些东西)。文件的布局如下:

/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'
    }
});