W zależności od tego, czy jest to kod klienta, czy po stronie serwera, istnieją dwa nieco inne podejścia.
po stronie klienta: Tutaj przywiązujemy rzeczy, które powinny być dostępne w plikach do globalnej przestrzeni nazw (window
) w następujący sposób:
class window.ChatService
constructor: (@io) ->
Następnie w innym pliku zarówno ChatService
i window.ChatService
umożliwi dostęp do klasy .
po stronie serwera: Tutaj musimy użyć exports
i require
. W pliku ChatService.coffee
, trzeba wykonać następujące czynności:
class exports.ChatService
constructor: (@io) ->
Następnie, aby dostać się na nią z innego pliku można użyć:
ChatService = require('ChatService.coffee').ChatService
Uwaga: Jeśli istnieje wiele klas, które otrzymujesz od ChatService.coffee, to jest jedno miejsce, gdzie DICT coffeescript za rozpakowywanie naprawdę błyszczy, takich jak:
{ChatService, OtherService} = require('ChatService.coffee')
Obie: Zasadniczo, decydujemy, czy uruchomić kod po stronie serwera, czy po stronie klienta, w zależności od tego, w którym środowisku się znajdujemy.Powszechnym sposobem, aby to zrobić:
class ChatService
constructor: (@io) ->
if typeof module != "undefined" && module.exports
#On a server
exports.ChatService = ChatService
else
#On a client
window.ChatService = ChatService
Aby go:
if typeof module != "undefined" && module.exports
#On a server
ChatService = require("ChatService.coffee").ChatService
else
#On a client
ChatService = window.ChatService
Klauzula else drugiego bloku może zostać pominięta, ponieważ ChatService
już odnosi się do odniesienia dołączonym do window
.
Jeśli masz zamiar zdefiniować wiele klas w tym pliku, może łatwiej będzie je zdefiniować następująco:
self = {}
class self.ChatService
a następnie dołączyć je jak module.exports = self
na serwerze i na kliencie _.extend(window, self)
(zamień _.extend
z inną funkcją extend
, stosownie do potrzeb).
Jeśli używasz Railsów, musisz upewnić się, że jakikolwiek zależny plik coffeescript jest wywoływany * przed * spróbujesz i odwołać się do niego. Po ustawieniu dyrektyw "wymagaj" w plikach, które faktycznie potrzebują innych, uzyskasz dostęp do zmiennych itp. –