Для управления зависимостями на стороне клиента я использую requirejs для исходного кода javascript и coffeescript. Возможно использовать плагин requirejs для загрузки собственных файлов кофе, но я предпочитаю «скомпилировать» в js.
requirejs также предоставляет / работает с r.js оптимизатором . Его можно использовать для объединения набора файлов js в один и его минимизации. вам не нужно указывать файл для агрегирования, это определение зависимостей каждого модуля, требуемое вашим "main.js". (функция, соответствующая вашему запросу)
Что-то мне очень нравится в requirejs, оно «продвигает» создание модуля и объявляет явные зависимости.
# A.coffee
define(() ->
class A
constructor: (@c1, @c2) ->
@c2 ?= 1
m1 : () ->
"hello"
toString : () -> "#{@c1}#{@c2}"
)
# B.coffee
define(['A'], (A) ->
a = new A(33)
console.log(a, a.m1())
)