1

我编写了一个使用 require.js 的主干.js 应用程序,并被分解为模型/、集合/等。然后我编写了另一个依赖于第一个应用程序的应用程序(以及其他一些东西。文件的布局如下:

/scripts/appA/
             models/
             collections/
             views/
/scripts/appNeedsA/
             models/
             collections/
             views/

我在需求A中放入什么来要求appA?以下对我来说似乎合乎逻辑,但不起作用。如果我使用 ../../appA,则可以找到 appA,但由于根错误,无法找到 IT 的依赖项。

define(
  ['underscore', 'backbone', '../appA'],
  function (_, Backbone, appA) {
     ...
  }
4

2 回答 2

2

这可能不是您希望的答案,但是,这是一种方法:

https://github.com/busticated/RequireLoadingExample

这个想法是你使用消费应用程序将使用的路径定义你的模块 deps,然后在消费应用程序中你适当地为路径起别名。

在我的示例中,我有一个顶级 main.js 文件,它同时引入了 app1.js 和 app2.js 模块。这两个模块都依赖于它们自己的子目录中的模块——例如,app1.js 使用一个/mods/a.js 和一个/mods/b.js。我有另一个主要(main-one.js)文件,它位于 one/ 目录中。该文件调用:

require.config({
    paths: {
        'jquery': 'libs/jquery',
        'one': '.'
    }
});

所以现在当 app1.js 加载时, one/mods/a.js 路径被转换为 ./mods/a.js 并且被找到/加载没有问题。

你应该可以在上面 fork 我的 repo 并在打开 js 控制台的浏览器中加载 index.html 和 one.html 以查看它是否正常工作。

希望能帮助到你!

于 2012-11-22T02:29:14.207 回答
0

正确的解决方案是:

define(
  ['underscore', 'backbone', 'appA/views/whatever'],
  function (_, Backbone, appAWhateverView) {
     ...
 }

并将您的 require.config 路径设置为包括:

require.config({
    paths: {
         appA: '../appA'
    }
});
于 2012-12-28T21:09:37.390 回答