11

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

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

编译器抱怨Backbone未定义。我相信这一定很简单。很容易找到一起使用CoffeeScriptBackbone的人的例子。我还尝试要求文件顶部的类,如下所示:

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

class foo extends Backbone.model

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

谁能告诉我如何进行?

4

2 回答 2

13

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

于 2011-05-19T16:40:36.940 回答
10

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

Backbone = require './backbone'

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

new foo

On new foo,initialize被调用,输出为

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

至于 的问题-r,它不起作用有两个原因:首先,-r执行

require '../backbone'

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

其次,-r与 with 结合使用-c不会将required 库添加到编译输出中。相反,它编译期间需要它。实际上,-r它的存在只是为了让您可以扩展编译器本身——例如,将预处理器或后处理器添加到编译管道中——如wiki 中所述

于 2011-03-05T17:35:20.183 回答