我认为这更像是一个CoffeeScript问题。我希望能够在foo.coffee
文件中使用Backbone中的类。运行-r
命令时,我尝试使用coffee
选项要求Backbone:
coffee -r "../backbone" -c foo.coffee
编译器抱怨Backbone未定义。我相信这一定非常简单。您可以轻松找到使用CoffeeScript和Backbone的人的示例。我也试过要求文件顶部的类如下:
Backbone.model = require('../../backbone').Model
class foo extends Backbone.model
我可以在console.log
方法中将其写入initialize
。当我尝试将this
写入console.log
时,我只得到一个空对象{}
。
谁能告诉我如何实现这一目标?
答案 0 :(得分:13)
如果您使用的是CoffeeScript和Backbone.js,我建议您查看Brunch。 它可能会让你克服困难。
答案 1 :(得分:10)
你能提供更多代码吗?我无法复制您对initialize
的问题。这是我的代码,backbone.js
与coffee
文件位于同一目录中:
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。