【问题标题】:Backbone-localstorage doesn't work with require.jsBackbone-localstorage 不适用于 require.js
【发布时间】:2013-06-03 01:38:48
【问题描述】:

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

这是 requirejs 加载的 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 sn-p 放入我的集合时,它在 chrome 的控制台中出错,提示未定义 Store。

知道我做错了什么吗?

【问题讨论】:

    标签: backbone.js requirejs


    【解决方案1】:

    正如 Paul 所说,您在任何地方都不需要 localstorage 模块。 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”,该文章还解释了如何构建代码以及如何在部署应用程序时将代码编译到一个文件中。

    【讨论】:

    【解决方案2】:

    有几个问题。

    首先,您正在设置主干本地存储的路径,但您在任何地方都不需要它,因此它永远不会实际加载。设置该路径基本上是定义它的快捷方式,而不是加载它。

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

    看起来您使用的是 AMD 的 Backbone 分支,而不是主干本地存储。您可以尝试找到一个现有的,或创建自己的similar to this

    要么这样,要么您可以尝试按原样加载主干本地存储(添加到定义调用的依赖项列表中),但您需要使用 !order 插件来确保首先加载主干。

    【讨论】:

    • 谢谢保罗,效果很好。我还有另一个小问题,您或许可以回答:当我使用 .add 方法而不是 create 时,如何让集合同步?
    • 别担心,我也想通了。我用了model.save
    【解决方案3】:

    在查看需要下划线和主干的源代码时,您在 require config 中的路径定义应与本地存储中所需的路径一致,即区分大小写

    【讨论】:

      猜你喜欢
      • 2018-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-30
      • 2018-09-10
      • 1970-01-01
      • 1970-01-01
      • 2020-04-19
      相关资源
      最近更新 更多