Backbone-localstorage不适用于require.js

时间:2012-02-21 05:29:02

标签: backbone.js requirejs

我正在尝试将localstorage添加到backbone.js中的我的集合中,但由于某些原因,require.js不会加载它。

以下是main.js文件中需要加载的内容:

require.config({
  paths: {
    'jquery': 'libs/jquery/jquery-1.7.1.min',
    'underscore': 'libs/underscore/underscore-min',
    'backbone': 'libs/backbone/backbone-min',
    'backbone-localstorage': 'libs/backbone-localstorage/backbone-localstorage-min',
    'text': 'libs/require/text'
  }
});

您可以在https://github.com/tominated/Vendotron看到完整的来源。我可以告诉它没有加载,因为当我将localstorage片段放入我的集合时,它在chrome的控制台中出错,说没有定义Store。

知道我做错了什么吗?

3 个答案:

答案 0 :(得分:8)

正如保罗所说,你不需要任何地方的本地存储模块。 Require.js 2.0具有JavaScript代码的特定机制,本质上是其他代码的插件 - shim选项。包括localStorage将如下所示:

require.config({
  baseUrl: "/js/",
  paths: {
    jquery: 'lib/jquery-1.8.0',
    underscore: 'lib/underscore-1.3.3',
    backbone: 'lib/backbone-0.9.2',
    'backbone.localStorage': 'lib/backbone.localStorage'
  },
  shim: {
    underscore: {
      exports: "_"
    },
    backbone: {
      deps: ['underscore', 'jquery'],
      exports: 'Backbone'
    },
    'backbone.localStorage': {
      deps: ['backbone'],
      exports: 'Backbone'
    }
  }
});

此示例是从文章“Build Backbone Apps Using RequireJS”中复制而来的,该文章还解释了如何构建代码以及如何在部署应用程序时将代码编译为一个文件。

答案 1 :(得分:2)

有几个问题。

首先,您要设置backbone-localstorage的路径,但是您从不要求它在任何地方,因此它实际上从未被加载。设置该路径基本上是定义它的快捷方式,而不是加载它。

第二个问题是,与骨干本身一样,大多数骨干插件都不是AMD模块。他们希望首先加载Backbone,以便他们可以添加扩展名。

看起来你使用的是Backbone的AMD分支,但不是使用骨干本地存储。您可以尝试找到现有的similar to this

或者你可以尝试按原样加载backbone-localstorage(添加到你的define调用的依赖列表中),但你需要使用!order插件来确保首先加载主干。

答案 2 :(得分:0)

在查看需要下划线和主干的源代码时,require配置中的路径定义应该与本地存储中的所需路径相符合I.e区分大小写