Backbone-localstorage не работает с require.js - PullRequest
3 голосов
/ 21 февраля 2012

Я пытаюсь добавить localstorage в мои коллекции в backbone.js, но по какой-то причине require.js не загружает его.

Вот что находится в файле main.js, который требует загрузки jj:

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. Я могу сказать, что он не загружается, потому что, когда я помещаю фрагмент localalstorage в свою коллекцию, он выдает ошибку в консоли chrome, говоря, что Store не определен.

Есть идеи, что я делаю не так?

Ответы [ 3 ]

8 голосов
/ 13 февраля 2013

Как сказал Пол, вам нигде не требуется модуль localalstorage.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'
    }
  }
});

Этот пример был скопирован из статьи " Создание магистральных приложений с использованием RequireJS ", в которой также объясняется, как структурировать код и как скомпилировать код.при развертывании приложения в один файл.

2 голосов
/ 22 февраля 2012

Есть пара проблем.

Во-первых, вы устанавливаете путь к хранилищу магистрального хранилища, но вам это нигде не требуется, поэтому он никогда не загружается.Установка этого пути в основном определяет ярлык к нему, а не загружает его.

Вторая проблема заключается в том, что, как и сама магистраль, большинство магистральных плагинов не являются модулями AMD.Сначала они хотят загрузить Backbone, чтобы они могли добавить к нему свои расширения.

Похоже, вы используете AMD Backbone, но не Backbone-localstorage.Вы можете попытаться найти существующий или сделать свой собственный похожим на этот .

Либо так, либо вы можете попытаться загрузить backbone-localstorage как есть (добавив в список зависимостей).вашего определения), но вам нужно будет использовать плагин! order, чтобы убедиться, что магистраль загружается первой.

0 голосов
/ 02 июня 2013

При поиске в исходном коде, где требуются подчеркивание и магистраль, определение вашего пути в require config должно соответствовать требуемому пути в локальном хранилище, т.е. с учетом регистра

...