Frage

Ich versuche, localstorage zu meinen Sammlungen in backbone.js hinzuzufügen, aber aus irgendeinem Grund wird require.js es nicht laden.

In der main.js-Datei, die geladen werden muss, ist Folgendes aufgeführt:

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'
  }
});

Die vollständige Quelle finden Sie unter https://github.com/tominated/Vendotron .Ich kann feststellen, dass es nicht geladen wird, da beim Einfügen des localstorage-Snippets in meine Sammlung in der Chrome-Konsole ein Fehler auftritt, der besagt, dass Store nicht definiert ist.

Hast du eine Idee, was ich falsch mache?

War es hilfreich?

Lösung

Es gibt einige Probleme.

Zuerst legen Sie den Pfad zu backbone-localstorage fest, benötigen ihn jedoch nirgendwo, sodass er nie geladen wird.Wenn Sie diesen Pfad festlegen, wird im Grunde eine Verknüpfung zu diesem Pfad definiert und nicht geladen.

Das zweite Problem ist, dass die meisten Backbone-Plugins wie das Backbone selbst keine AMD-Module sind.Sie möchten, dass Backbone zuerst geladen wird, damit sie ihre Erweiterungen hinzufügen können.

Es sieht so aus, als würden Sie eine AMD-Verzweigung von Backbone verwenden, aber keinen Backbone-Localstorage.Sie könnten versuchen, ein vorhandenes zu finden, oder Ihr eigenes ähnlich machendazu .

Entweder das, oder Sie können versuchen, Backbone-Localstorage unverändert zu laden (Hinzufügen zur Abhängigkeitsliste Ihres Definitionsaufrufs), aber Sie müssten das Plugin! order verwenden, um sicherzustellen, dass das Backbone zuerst geladen wird.

Andere Tipps

Wie Paul sagte, benötigen Sie das localstorage-Modul nirgendwo.Require.js 2.0 verfügt über einen speziellen Mechanismus für JavaScript-Code, der im Wesentlichen ein Plugin für anderen Code ist - die Option shim.Das Einschließen von localStorage würde folgendermaßen aussehen:

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'
    }
  }
});

Dieses Beispiel wurde aus dem Artikel " Build Backbone Apps" kopiertVerwenden von RequireJS ", in dem auch erläutert wird, wie Sie Ihren Code strukturieren und den Code beim Bereitstellen der Anwendung in eine Datei kompilieren.

Wenn Sie in den Quellcode schauen, wo Unterstrich und Backbone erforderlich sind, sollte Ihre Pfaddefinition in der erforderlichen Konfiguration mit dem erforderlichen Pfad im lokalen Speicher übereinstimmen, dh zwischen Groß- und Kleinschreibung unterscheiden

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top