我正處於嘗試編寫一些合理的Javascript的早期階段。我想要命名空間基本上我的應用程序名稱下的所有東西,以儘可能避免全局性,但仍然給我一種方式來訪問在該地點聲明的函數。但是,我不想在我的函數定義中超級冗長。如何在Rails 3.1中使用Sprockets編寫DRY,模塊化coffeescript?
我理想中的CoffeeScript會是這樣的:
class @MyApp
@myClassMethod = ->
console.log 'This is MyApp.myClassMethod()'
class @Module1
@moduleMethod = ->
console.log 'This is MyApp.Module1.moduleMethod()'
你得到的圖片。這樣我就不必每次都要寫MyApp.Module.submoduleMethod = ->
,每次我想正確定義一個名稱空間函數時 - 使用@
並在內定義的東西我的類定義使事情更好,更短。
這一切都很順利,直到我想將我的功能分成多個CoffeeScript文件。然後,我真正想要的是這樣的:
// application.js
class @MyApp
//= require 'module1'
//= require 'module2'
// module1.js
class @Module1
@moduleMethod = ->
console.log 'This is STILL MyApp.Module1.moduleMethod()'
它似乎並不像鏈輪可以做到這一點。
是否有一個明智的方法來要求我的CoffeeScript文件在我的容器文件的正確位置?或者另一種方法來編寫使用CoffeeScript,Sprockets和Rails 3.1分成單獨文件的模塊化代碼?
我認爲這個問題需要進一步調查 - 下面的答案不夠好,特別是,由於coffeescript的創建者已經刪除了「簡單模塊」頁面b/c,所以該技術很差。 – dmonopoly