自Meteor 0.6.0發佈並增加file-level JavaScript variable scoping以來,我面臨着一個使用CoffeeScript類的問題,每個類都在其各自的文件中定義。Meteor> 0.6.0和CoffeeScript的全球課程
foo.coffee:
class Foo
...
subfoo.coffee:
class Subfoo extends Foo
...
正如預期的那樣,因爲在流星0.6.0帶來的變化,我發現了以下錯誤:
ReferenceError: Foo is not defined
這是我的問題:如何處理跨CoffeeScript和Mete文件的類定義或> 0.6.0?理想情況下:爲了確保這些定義(以及我的應用程序的核心部分)不是依賴流星的,有沒有方便的方式來修改定義類的方式太多而非?
當試圖實現您的解決方案,我只是意識到「由於Meteor的加載順序規則,foo.coffee'被嵌套在我的目錄結構中的錯誤位置,因此'Foo'類在'subfoo.coffee'中不可見。將'foo.coffee'移動到更合適的目錄後,使用'class @ Foo'和'class @ Subfoo extends Foo'作爲註釋[注意:在'@'之後的空格中插入空格以避免提及]。不過,我仍然有點擔心必須編輯所有我的應用程序類和前綴類名稱,而且每個地方都帶有'@',但我現在就要忍受這一點!謝謝 – jbmusso 2013-04-05 13:20:10
啊,這很有趣。我不知道這是有效的CoffeeScript。還有另一個沒有在文檔中指定的珍聞... – 2013-04-06 05:46:27
我不知道這是否是有效的CoffeeScript,直到我玩弄js2coffee.org。我相應地編輯了這個問題,並刪除了我自己的(錯誤的和誤導性的)建議。我建議編輯你的答案以添加'class @Foo extends Subfoo'解決方案! – jbmusso 2013-04-06 11:47:53