I think this is more of a CoffeeScript question. I want to be able to use classes from Backbone in a foo.coffee
file. I tried using the -r
option to require Backbone when running the coffee
command:
coffee -r "../backbone" -c foo.coffee
The compiler complained that Backbone was undefined. I'm sure that this must be pretty simple. It's easy to find examples of people using CoffeeScript and Backbone together. I also tried requiring the class at the top of the file like so:
Backbone.model = require('../../backbone').Model
class foo extends Backbone.model
I could write it to console.log
in the initialize
method. When I tried writing this
to console.log
, I just got an empty object {}
.
Can anyone tell me how to get this going?
Could you provide more of your code? I wasn't able to replicate the issue you had with
initialize
. Here's my code, withbackbone.js
in the same directory as thecoffee
file:On
new foo
,initialize
is called and the output isAs to the issue with
-r
, there are two reasons it doesn't work: First,-r
performswithout assigning it to anything. Since Backbone doesn't create globals (only exports), the module has to be assigned when it's
require
d.Second, using
-r
in conjunction with-c
doesn't add therequire
d library to the compiled output. Instead, it requires it during compilation. Really,-r
only exists so that you can extend the compiler itself—for instance, adding a preprocessor or postprocessor to the compilation pipeline—as documented on the wiki.If you're using CoffeeScript and Backbone.js, I recommend checking out Brunch. It may just get you past your difficulties.