最近我一直在思考CoffeeScript,並且我剛剛升級了一個Rails項目,我一直致力於Rails 3.2.8(來自Rails 3.0.9,它沒有資產管道)在this guide之後。如何用軌道咖啡腳本開發
我不得不做一些hackish的東西來讓事情正常工作。我測試了一個新頁面'/ pages/game',因此它在資產目錄中有一些CoffeeScript示例。
(應用程序/資產/ Java腳本/ page.js.coffee)
class MyObject
constructor: ->
hello: -> alert 'hello world of coffeescript!'
a = new MyObject
a.hello()
然後,我添加了一行到我的生產環境: (配置/環境/ production.rb)
config.assets.precompile += %w(pages.js) # this is needed to precompile coffee script files... it is difficult to understand how manifest files work...
然後鍵入
$ bundle exec rake assets:precompile
一起彙編page.js唯一的問題是類I C用CoffeeScript處理並不能像我預期的那樣工作。所以我在FireFox中打開了我的開發者控制檯,並嘗試手動實例化類,但它表現爲沒有名爲MyClass的對象。
那麼我哪裏出錯了?假設我可以手動實例化我在CoffeeScript中編寫的類嗎?我的hackish是否將pages.js添加到預編譯數組不合適?如果您是CoffeeScript專業人員,您會如何測試您的課程等?
更新: 我的問題的一部分是'可變隱私',是在咖啡腳本類inherant。這個隱私可以用標準的JavaScript來實現,並且在涉及咖啡腳本之前應該被理解。 http://benalman.com/news/2010/11/immediately-invoked-function-expression/
這就是說,需要被附加到窗口對象的咖啡腳本類,使之全局,就像這樣:
更正
class MyObject
constructor: ->
hello: -> alert 'hello world of coffeescript!'
window.MyObject = MyObject;
一旦類是在此發表莊園(通過將其附加到窗口作爲一個全局),它可以通過a = new MyObject()
實例化,然後通過其功能正常地提醒屏幕a.hello()
請記住,堆棧溢出像維基百科一樣,主要是爲了提供參考。你寫作的語氣應該很專業。 – meagar
您不應該將'pages.js'添加到預編譯的資產中。相反,你應該通過'// = require pages'將它添加到你的JS清單文件中。簡單地將其添加到預編譯的資源中並不包含在您的頁面中。 – meagar