开始使用Backbone和CoffeeScript

时间:2011-03-05 02:43:50

标签: coffeescript backbone.js

我认为这更像是一个CoffeeScript问题。我希望能够在foo.coffee文件中使用Backbone中的类。运行-r命令时,我尝试使用coffee选项要求Backbone

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

编译器抱怨Backbone未定义。我相信这一定非常简单。您可以轻松找到使用CoffeeScriptBackbone的人的示例。我也试过要求文件顶部的类如下:

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

class foo extends Backbone.model

我可以在console.log方法中将其写入initialize。当我尝试将this写入console.log时,我只得到一个空对象{}

谁能告诉我如何实现这一目标?

2 个答案:

答案 0 :(得分:13)

如果您使用的是CoffeeScriptBackbone.js,我建议您查看Brunch。 它可能会让你克服困难。

答案 1 :(得分:10)

你能提供更多代码吗?我无法复制您对initialize的问题。这是我的代码,backbone.jscoffee文件位于同一目录中:

Backbone = require './backbone'

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

new foo

new foo上,调用initialize,输出为

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

关于-r的问题,有两个原因不起作用:第一,-r执行

require '../backbone'

没有将它分配给任何东西。由于Backbone不会创建全局变量(仅导出),因此必须在require d时分配模块。

其次,将-r-c结合使用不会将require d库添加到已编译的输出中。相反,它在编译期间需要。实际上,-r只存在,因此您可以扩展编译器本身 - 例如,将预处理器或后处理器添加到编译管道 - documented on the wiki