开始使用Backbone和CoffeeScript

Pau*_*aul 11 coffeescript backbone.js

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

coffee -r "../backbone" -c foo.coffee
Run Code Online (Sandbox Code Playgroud)

编译器抱怨Backbone未定义.我相信这一定非常简单.很容易找到一起使用CoffeeScriptBackbone的人的例子.我也试过要求文件顶部的类如下:

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

class foo extends Backbone.model
Run Code Online (Sandbox Code Playgroud)

我可以把它写console.loginitialize方法中.当我尝试写作thisconsole.log,我只是得到一个空物体{}.

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

34m*_*4m0 13

如果您正在使用CoffeeScriptBackbone.js,我建议您查看早午餐.它可能会让你超越你的困难.


Tre*_*ham 10

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

Backbone = require './backbone'

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

new foo
Run Code Online (Sandbox Code Playgroud)

打开new foo,initialize调用并输出

{ attributes: {},
  _escapedAttributes: {},
  cid: 'c0',
  _previousAttributes: {} }
Run Code Online (Sandbox Code Playgroud)

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

require '../backbone'
Run Code Online (Sandbox Code Playgroud)

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

其次,-r结合使用-c不会将required库添加到编译输出中.相反,它编译期间需要它.实际上,-r只有存在才能扩展编译器本身 - 例如,在编译管道中添加预处理器或后处理器 - 如wiki中所述.