Domanda

Sto cercando di aggiungere localstorage alle mie raccolte in backbone.js, ma per qualche motivo require.js non lo caricherà.

Ecco cosa c'è nel file main.js che richiede i caricamenti di 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'
  }
});

Puoi vedere la fonte completa su https://github.com/tominated/Vendotron .Posso dire che non si sta caricando perché quando inserisco lo snippet localstorage nella mia raccolta, viene visualizzato un errore nella console di Chrome dicendo che Store non è definito.

Hai idea di cosa sto sbagliando?

È stato utile?

Soluzione

Ci sono un paio di problemi.

Innanzitutto, stai impostando il percorso per backbone-localstorage, ma non lo richiedi mai da nessuna parte, quindi non viene mai effettivamente caricato.L'impostazione di quel percorso significa fondamentalmente definire un collegamento ad esso, non caricarlo.

Il secondo problema è che, come il backbone stesso, la maggior parte dei plugin backbone non sono moduli AMD.Vogliono che Backbone venga caricato per primo, in modo che possano aggiungervi le loro estensioni.

Sembra che tu stia usando un fork AMD di Backbone, ma non backbone-localstorage.Potresti provare a trovarne uno esistente o creare il tuo similea questo .

O quello, oppure puoi provare a caricare backbone-localstorage così com'è (aggiungendolo all'elenco delle dipendenze della tua chiamata define), ma dovresti usare il plugin! order per assicurarti che backbone sia caricato prima.

Altri suggerimenti

Come ha detto Paul, non richiedi il modulo localstorage da nessuna parte.Require.js 2.0 ha un meccanismo specifico per il codice JavaScript che è essenzialmente un plug-in per altro codice: l'opzione shim.Includere localStorage sarebbe simile a questo:

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

Questo esempio è stato copiato dall'articolo " Build Backbone AppsUtilizzo di RequireJS "che spiega anche come strutturare il codice e come compilare il codice in un file durante la distribuzione dell'applicazione.

Guardando all'interno del codice sorgente, dove sono richiesti il carattere di sottolineatura e la spina dorsale, la definizione del percorso in require config dovrebbe corrispondere al percorso richiesto nella memoria locale, vale a dire case sensitive

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top