Jestem na wczesnym etapie próbowania napisania sensownego kodu Javascript. Chcę przestrzeni nazw w zasadzie wszystko pod nazwą mojej aplikacji, aby jak najbardziej unikać globali, ale nadal mam sposób na dostęp do funkcji zadeklarowanych wokół tego miejsca. Jednak nie chcę być super verbose w moich definicjach funkcji.Jak piszesz DRY, modularny coffeescript ze Sprockets w Rails 3.1?
Mój ideał coffeescript byłoby coś takiego:
class @MyApp
@myClassMethod = ->
console.log 'This is MyApp.myClassMethod()'
class @Module1
@moduleMethod = ->
console.log 'This is MyApp.Module1.moduleMethod()'
uzyskać obraz. W ten sposób unikam konieczności pisania MyApp.Module.submoduleMethod = ->
za każdym razem, gdy chcę poprawnie zdefiniować funkcję z wyświetlaniem nazw - używając @
i definiując rzeczy w ramach definicji klasy utrzymuję rzeczy ładne i krótkie.
Wszystko idzie dobrze, dopóki nie chcę podzielić mojej funkcjonalności na wiele plików CoffeeScript. To, czego naprawdę chcę, to coś takiego:
// application.js
class @MyApp
//= require 'module1'
//= require 'module2'
// module1.js
class @Module1
@moduleMethod = ->
console.log 'This is STILL MyApp.Module1.moduleMethod()'
Nie wygląda na to, że Sprockets mogą to zrobić.
Czy istnieje rozsądny sposób na wymaganie moich plików CoffeeScript we właściwym miejscu w moich plikach kontenera? Lub inny sposób podejścia do pisania kodu modułowego, który jest podzielony na osobne pliki za pomocą CoffeeScript, Sprockets i Rails 3.1?
Myślę, że to pytanie wymaga dalszych badań - poniższe odpowiedzi nie są wystarczająco dobre, szczególnie. odkąd twórca coffeescript usunął stronę "łatwych modułów" b/c technika jest słaba. – dmonopoly