【问题标题】:Get started with Backbone and CoffeeScript开始使用 Backbone 和 CoffeeScript
【发布时间】:2011-07-09 05:55:41
【问题描述】:

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

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

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

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

class foo extends Backbone.model

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

谁能告诉我怎么做?

【问题讨论】:

    标签: coffeescript backbone.js


    【解决方案1】:

    您能提供更多代码吗?我无法复制您对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 不创建全局变量(仅导出),因此必须在为 required 时分配模块。

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

    【讨论】:

    • 感谢您的帮助。我想做的只是在 Coffeescript 中完成 Backbone todos 教程。我克隆了主干存储库,然后在咖啡的示例下创建了我自己的目录。长话短说,我将主干和下划线移动到同一个目录中,并且上面的“foo”示例有效。我也可以去“hello world”听 tut。我只是在生成的代码中注释掉了 require 语句和主干变量声明。然后,我用预期的控制台输出加载了 index.html。当我的 html 加载咖啡需要编译的库时,是否有更简单的工作流程?
    • 你的意思是这样? stackoverflow.com/questions/5170473/… :) (有关为浏览器编译的更多替代方案,请参阅我对该问题的回答。coffee 用途广泛,但绝对不是适合所有工作的工具。)
    • 好的。很公平。目前,我正在尝试要求属于 Todos 的“backbone-localstorage”文件。它期望加载下划线。无需尝试在浏览器中定义和编译 Todos ......我如何管理这些依赖项以便我可以编译?我尝试要求下划线并将其分配给我的 Todos.coffee 中的 _。我仍然得到“_未定义”。当然我错过了一些明显的东西???
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-15
      • 2012-05-27
      • 1970-01-01
      • 2013-04-14
      • 2012-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多