Pregunta

Estoy tratando de agregar localstorage a mis colecciones en backbone.js, pero por alguna razón, require.js no lo carga.

Esto es lo que hay en el archivo main.js que requiere cargas dejs:

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

Puede ver la fuente completa en https://github.com/tominated/Vendotron .Puedo decir que no se está cargando porque cuando coloco el fragmento de almacenamiento local en mi colección, aparece un error en la consola de Chrome que dice que Store no está definido.

¿Alguna idea de lo que estoy haciendo mal?

¿Fue útil?

Solución

Hay un par de problemas.

Primero, está configurando la ruta a backbone-localstorage, pero nunca la necesita en ningún lugar, por lo que nunca se carga.Establecer esa ruta es básicamente definir un acceso directo a ella, no cargarla.

El segundo problema es que, como el backbone en sí, la mayoría de los complementos del backbone no son módulos AMD.Quieren tener Backbone cargado primero, para poder agregarle sus extensiones.

Parece que está utilizando una bifurcación AMD de Backbone, pero no backbone-localstorage.Puede intentar encontrar uno existente o crear su propio similara esto .

O eso, o puede intentar cargar backbone-localstorage como está (agregando a la lista de dependencias de su llamada de definición), pero necesitaría usar el complemento! order para asegurarse de que el backbone se cargue primero.

Otros consejos

Como dijo Paul, no necesita el módulo de almacenamiento local en ninguna parte.Require.js 2.0 tiene un mecanismo específico para el código JavaScript que es esencialmente un complemento para otro código: la opción shim.Incluir localStorage se vería así:

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

Este ejemplo se copió del artículo " Crear aplicaciones de backboneUsando RequireJS "que también explica cómo estructurar su código y cómo compilar el código en un archivo al implementar la aplicación.

Al mirar dentro del código fuente, donde se requieren el subrayado y la columna vertebral, la definición de la ruta en la configuración requerida debe coincidir con la ruta requerida en el almacenamiento local, es decir, distingue entre mayúsculas y minúsculas

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top