2011-03-05 29 views
11

我認爲這更多的是CoffeeScript問題。我希望能夠在foo.coffee文件中使用Backbone中的類。我嘗試使用-r選項,要求Backbone運行coffee命令時:開始使用Backbone和CoffeeScript

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

編譯器抱怨說Backbone是不確定的。我相信這一定很簡單。很容易找到一起使用CoffeeScriptBackbone的人的例子。我也試過要求的類別在文件中,像這樣的頂級:

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

class foo extends Backbone.model 

我可以在initialize方法將其寫入console.log。當我嘗試寫thisconsole.log時,我剛剛收到一個空物件{}

任何人都可以告訴我如何得到這個去嗎?

回答

10

你能提供更多的代碼嗎?我無法複製您使用initialize時遇到的問題。在同一個目錄下面是我的代碼,以backbone.jscoffee文件:

Backbone = require './backbone' 

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

new foo 

new fooinitialize被調用,輸出

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

至於與-r這個問題,有兩個原因它不起作用:首先,-r執行

require '../backbone' 

未分配它對任何事情都是。由於Backbone不會創建全局變量(僅導出),因此該模塊在require d時必須進行分配。

其次,使用-r-c一起不會將require d庫添加到編譯的輸出中。相反,在編譯期間它需要。實際上,-r僅存在,因此您可以擴展編譯器本身 - 例如,將編譯管道中的預處理器或後處理器添加爲documented on the wiki

+0

感謝您的幫助。我所要做的只是在Coffeescript中做Backbone todos教程。我克隆了骨幹回購,然後在咖啡的例子下創建了我自己的目錄。長話短說,我將主幹和下劃線移動到同一個目錄,上面的「foo」示例工作。我也得到了「嘿世界」的嘖嘖。我剛剛在生成的代碼中註釋了require語句和骨幹變量聲明。然後,我用預期的控制檯輸出加載了index.html。當我的html加載庫需要編譯咖啡時,是否有更簡單的工作流程? – Paul 2011-03-06 01:24:22

+0

您的意思是這樣的? http://stackoverflow.com/questions/5170473/is-there-a-way-to-send-coffeescript-to-the-clients-browser-and-have-it-compiled :)(請參閱我對該問題的回答爲更多的瀏覽器編譯選擇,'咖啡'是多才多藝的,但它絕對不是每個工作的正確工具。) – 2011-03-06 01:34:50

+0

好的。很公平。目前,我試圖要求屬於Todos的'backbone-localstorage'文件。它期望下劃線被加載。不要試圖在瀏覽器中定義和編譯Todos ......我如何管理這些類型的依賴關係以便編譯?我嘗試要求下劃線並將其分配給我的Todos.coffee中的_。我仍然有「_未定義」。當然,我失去了明顯的東西? – Paul 2011-03-06 02:21:55