В зависимости от того, является ли это кодом на стороне клиента или на стороне сервера, существует два слегка отличающихся подхода.
На стороне клиента: здесь мы прикрепляем вещи, которые должны быть доступны через файлы, к глобальному пространству имен (window
) следующим образом:
class window.ChatService
constructor: (@io) ->
Затем в другом файле и ChatService
, и window.ChatService
разрешат доступ к классу.
На стороне сервера: Здесь мы должныиспользуйте exports
и require
.В файле ChatService.coffee
у вас будет следующее:
class exports.ChatService
constructor: (@io) ->
Затем, чтобы получить его из другого файла, вы можете использовать:
ChatService = require('ChatService.coffee').ChatService
Примечание: если есть несколькоклассы, которые вы получаете от ChatService.coffee, это одно из мест, где действительно распадается распаковка CoffeeScript, например:
{ChatService, OtherService} = require('ChatService.coffee')
Оба: в основном, мы выбираем, запускать ли на стороне сервера или клиентакод, основанный на том, в какой среде мы находимся. Обычный способ сделать это:
class ChatService
constructor: (@io) ->
if typeof module != "undefined" && module.exports
#On a server
exports.ChatService = ChatService
else
#On a client
window.ChatService = ChatService
Чтобы получить его:
if typeof module != "undefined" && module.exports
#On a server
ChatService = require("ChatService.coffee").ChatService
else
#On a client
ChatService = window.ChatService
Условие else второго блока может быть следующим:пропущено, поскольку ChatService
уже ссылается на ссылку, прикрепленную к window
.
Если вы собираетесь определить множество классов в этом файле, может быть проще определить их как:
self = {}
class self.ChatService
И затем присоедините их как module.exports = self
на сервере и _.extend(window, self)
на клиенте (замените _.extend
другой функцией extend
в зависимости от ситуации).