Как вы пишете СУХИЙ, модульный coffeescript со Sprockets в Rails 3.1?

Я нахожусь на ранних стадиях попытки написать какой-нибудь разумный 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()'

Не похоже, что Sprockets могут это сделать.

Есть ли разумный способ требовать, чтобы мои файлы CoffeeScript в нужном месте в моих файлах-контейнерах? Или другой подход к написанию модульного кода, разделенного на отдельные файлы, с использованием CoffeeScript, Sprockets и Rails 3.1?

15
задан nfm 25 July 2011 в 14:05
поделиться