2011-03-05 17 views
11

Creo que esto es más una pregunta de CoffeeScript. Quiero poder utilizar las clases desde Backbone en un archivo foo.coffee. He intentado utilizar la opción de requerir -rBackbone cuando se ejecuta el comando coffee:Comenzar con Backbone y CoffeeScript

coffee -r "../backbone" -c foo.coffee 

El compilador se quejaron de que Backbone era indefinido. Estoy seguro de que esto debe ser bastante simple. Es fácil encontrar ejemplos de personas que usan CoffeeScript y Backbone juntas. También probé que requiere la clase en la parte superior del archivo, así:

Backbone.model = require('../../backbone').Model 

class foo extends Backbone.model 

podría escribir a console.log en el método initialize. Cuando traté de escribir this en console.log, acabo de obtener un objeto vacío {}.

¿Alguien me puede decir cómo poner esto en marcha?

Respuesta

10

¿Podría proporcionar más de su código? No pude replicar el problema que tenías con initialize. Aquí está mi código, con backbone.js en el mismo directorio que el archivo coffee:

Backbone = require './backbone' 

class foo extends Backbone.Model 
    initialize: -> 
    console.log this 

new foo 

En new foo, initialize se llama y la salida es

{ attributes: {}, 
    _escapedAttributes: {}, 
    cid: 'c0', 
    _previousAttributes: {} } 

cuanto a la cuestión con -r, hay dos razones no funciona: En primer lugar, -r realiza

require '../backbone' 

sin asignar dándolo a cualquier cosa. Como Backbone no crea globales (solo exporta), el módulo debe asignarse cuando es require d.

segundo lugar, utilizando -r en conjunción con -c no agrega la biblioteca require d a la salida compilado. En cambio, lo requiere durante la compilación. En realidad, -r solo existe para que pueda extender el compilador en sí, por ejemplo, agregar un preprocesador o postprocesador a la compilación, como documented on the wiki.

+0

Gracias por la ayuda. Todo lo que intentaba hacer era hacer el tutorial Backbone todos en Coffeescript. Cloné el repositorio principal y luego creé mi propio directorio en ejemplos para café. Para resumir, moví backbone y guión bajo en el mismo directorio y funcionó el ejemplo "foo" anterior. También pude llegar al "mundo de hola" para el tut. Acabo de comentar la declaración require y la declaración de la variable backbone en el código generado. Luego, cargué index.html con la salida de la consola esperada. ¿Hay un flujo de trabajo más fácil cuando mi html carga libs que el café necesita compilar? – Paul

+0

¿Te refieres a esto? http://stackoverflow.com/questions/5170473/is-there-a-way-to-send-coffeescript-to-the-clients-browser-and-have-it-compiled :) (Ver mi respuesta a esa pregunta para obtener más alternativas para compilar para el navegador. 'coffee' es versátil, pero definitivamente no es la herramienta adecuada para cada trabajo). –

+0

Ok. Lo suficientemente justo.Por el momento, estoy tratando de solicitar el archivo 'backbone-localstorage' que forma parte de Todos. Espera que se cargue el subrayado. Sin intentar definir y compilar Todos en el navegador ... ¿cómo administro este tipo de dependencias para que pueda compilar? Intenté requerir subrayado y asignarlo a _ en mi Todos.coffee. Todavía tengo "_ no está definido". Sin duda me falta algo obvio ??? – Paul