私は、実用的な Javascript を作成しようとしている初期段階にいます。基本的に、アプリケーションの名前の下にすべての名前空間を作成して、グローバルをできるだけ回避しますが、その場所で宣言された関数にアクセスする方法を提供します。ただし、関数定義で非常に冗長になりたくありません。
私の理想の 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 を使用して、個別のファイルに分割されたモジュラー コードを作成する別の方法はありますか?