1

所以在我的 TODO 应用程序中,我使用了 Backbone 和 require.js。一切都很酷。我将所有模型、视图、集合分离为单个文件并使用 require.js 加载它们。在我尝试使用控制台 require.js 优化器 r.js 将所有文件合并到一个之后。结果,我得到了一个包含所有库和类的文件。但是当我尝试运行时,我遇到了 Backbone 未定义的错误。我检查了文件,看到 r.js 生成了下一件事: 1. 首先它将主干源添加到 app-built.js 文件,然后放置下一个字符串

define("lib/backbone", function(){});

因此,我在窗口中有 Backbone 变量,但在我的模块中,我以 require.js 的方式使用它 define('models/todo',['jquery','underscore','lib/backbone'],function ($, _, Backbone) {

不作为全局变量,导致我的模块主干局部变量未定义。underscore.js 也有同样的问题。R.js 以相同的方式导入它。

所以问。将来如何避免其他库出现这个问题或现在如何解决这个问题?一些技术?

4

1 回答 1

1

您可能需要使用 shim,因为根据 RequireJS 的 Backbone 期望 Backbone 位于基本 url 目录中。在您的情况下,它似乎在 /lib 中。配置垫片。根据您使用的 RequireJS 版本,您只需要确保您使用的库与 AMD 兼容。

在您的 requireJS 配置中:

shim: {
  backbone: {
    deps: ["underscore", "jquery"],
    attach: "Backbone"
  },
  underscore: {
    attach: "_"
  }
}
于 2013-03-31T17:50:36.400 回答