2012-07-08 16 views
5

? No estoy seguro de cómo uso los espacios de nombres en un entorno Backbone modularizado (RequireJs).¿Cómo uso los espacios de nombres en Backbone con RequireJs

He pensado un poco cómo podría ser , pero no estoy seguro si es la manera correcta.

app.js (siendo ejecutados por main.js)

define('App', ['underscore', 'backbone', 'Router'], function(_, Backbone, Router){ 
    function initialize(){ 
     var app = {}; // app is the global namespace variable, every module exists in app 

     app.router = new Router(); // router gets registered 

     Backbone.history.start(); 
    } 

    return { initialize: initialize } 
}); 

messages.js

define('MessageModel', ['underscore', 'backbone', 'App'], function(_, Backbone, App){ 
    App.Message.Model; // registering the Message namespace with the Model class 

    App.Message.Model = Backbone.Model.extend({ 
     // the backbone stuff 
    }); 

    return App; 
}); 

Es este el enfoque correcto o estoy yo totalmente en el camino equivocado (si es así, ¡por favor, corrígeme!)

Respuesta

5

Echa un vistazo a TODO Backbone + requireJs example:

https://github.com/addyosmani/todomvc

+0

Hola, revisé el código. Esa es la forma en que uso RequireJs actualmente pero extraño los espacios de nombres (siempre hay otra variable que no es "global") –

+0

El enlace ya no funciona :(¿Alguna idea de dónde recuperar ese recurso? – lucke84

+1

http://addyosmani.github.com/todomvc/dependency-examples/backbone_require/ –

1

encontrado una aplicación ejemplo real usando espacios de nombres, como se menciona en el post inicio: https://github.com/nrabinowitz/gapvis

sólo tienen que probar que los próximos días

1

Soy nuevo en la columna vertebral, pero acabamos de leer un fragmento de los documentos requirejs.

Un módulo es diferente de un archivo de script tradicional en el sentido de que define un objeto bien definido que evita contaminar el espacio de nombres global. Puede enumerar explícitamente sus dependencias y obtener un control sobre esas dependencias sin necesidad de referirse a objetos globales, sino que recibe las dependencias como argumentos para la función que define el módulo. Los módulos en RequireJS son una extensión del Patrón del Módulo, con el beneficio de no necesitar globales para referirse a otros módulos.

Para mí, esto suena como si al usar requirejs, puede olvidarse de espacios de nombres, ya que requirejs se ocupa de ello. Simplemente tendrías acceso diferente. Cuando desee acceder a él desde otro módulo, colocará una ruta al archivo en su conjunto de dependencias, y alimentará una variable respectiva a la siguiente función.

define(["folder/a-script", "folder/another-script"], function(AScript, AnotherScript) { 
     // In here the scripts are loaded and can be used, but are called by 
     // their relative name in the anonymous function. 
    } 
); 

De todos modos, tal vez en algunos casos existe todavía la necesidad de espacio de nombres algo, pero creo que, en general, vale la pena reading the docs para ver si es necesario.

Cuestiones relacionadas