Backbone 和 CoffeeScript 入门
我认为这更像是一个 CoffeeScript 问题。我希望能够在 foo.coffee
中使用 Backbone 中的类文件。我尝试使用 -r
选项在运行 Backbone >coffee
命令:
coffee -r "../backbone" -c foo.coffee
编译器抱怨 Backbone 未定义。我确信这一定非常简单。很容易找到人们使用 CoffeeScript 和 骨干在一起。我还尝试要求该类位于文件顶部,如下所示:
Backbone.model = require('../../backbone').Model
class foo extends Backbone.model
我可以将其写入 initialize
方法中的 console.log
。当我尝试将 this
写入 console.log
时,我只得到一个空对象 {}
。
谁能告诉我如何做到这一点?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您使用 CoffeeScript 和 Backbone.js,我建议查看早午餐。
它可能会让你克服困难。
If you're using CoffeeScript and Backbone.js, I recommend checking out Brunch.
It may just get you past your difficulties.
你能提供更多你的代码吗?我无法重现您在
initialize
中遇到的问题。这是我的代码,其中backbone.js
与coffee
文件位于同一目录中:在
new foo
上,initialize
被调用,输出为关于
-r
的问题,它不起作用有两个原因:首先,-r
执行时没有将其分配给任何东西。由于 Backbone 不创建全局变量(仅导出),因此必须在
require
d 时分配模块。其次,将
-r
与-c
结合使用不会将require
d 库添加到编译输出中。相反,它在编译期间需要它。实际上,-r
的存在只是为了让您可以扩展编译器本身——例如,向编译管道添加预处理器或后处理器——如 在 wiki 上有记录。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.