Я нахожусь на ранней стадии, пытаясь написать здравый 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?