【问题标题】:Backbone.js and Require.js tool r.jsBackbone.js 和 Require.js 工具 r.js
【发布时间】:2013-03-29 09:17:10
【问题描述】:

所以在我的 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 以同样的方式导入。

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

【问题讨论】:

  • 这部分我不清楚:“没有全局”。你能改写或扩展这个吗?可能是错别字。

标签: javascript backbone.js requirejs r.js


【解决方案1】:

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

在你的 requireJS 配置中:

shim: {
  backbone: {
    deps: ["underscore", "jquery"],
    attach: "Backbone"
  },
  underscore: {
    attach: "_"
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-28
    相关资源
    最近更新 更多