Selon qu'il s'agit de code côté client ou côté serveur, il existe deux approches légèrement différentes.
Côté client : Ici, nous attachons les éléments qui doivent être disponibles dans tous les fichiers à l'espace de nom global ( window
) comme suit :
class window.ChatService
constructor: (@io) ->
Ensuite, dans un autre fichier, les deux ChatService
y window.ChatService
permettra d'accéder à la classe.
Côté serveur : ici, nous devons utiliser exports
y require
. Dans le ChatService.coffee
vous obtiendrez ce qui suit :
class exports.ChatService
constructor: (@io) ->
Ensuite, pour l'obtenir à partir d'un autre fichier, vous pouvez utiliser :
ChatService = require('ChatService.coffee').ChatService
Remarque : Si vous obtenez plusieurs classes à partir de ChatService.coffee, c'est l'endroit où le déballage des dictées de CoffeeScript est le plus efficace, par exemple :
{ChatService, OtherService} = require('ChatService.coffee')
Les deux : En fait, nous choisissons d'exécuter le code côté serveur ou côté client en fonction de l'environnement dans lequel nous nous trouvons. Une façon courante de le faire :
class ChatService
constructor: (@io) ->
if typeof module != "undefined" && module.exports
#On a server
exports.ChatService = ChatService
else
#On a client
window.ChatService = ChatService
Pour l'obtenir :
if typeof module != "undefined" && module.exports
#On a server
ChatService = require("ChatService.coffee").ChatService
else
#On a client
ChatService = window.ChatService
La clause else du deuxième bloc peut être ignorée, puisque ChatService
fait déjà référence à la référence attachée à window
.
Si vous devez définir un grand nombre de classes dans ce fichier, il peut être plus facile de les définir comme suit :
self = {}
class self.ChatService
Et ensuite les attacher comme module.exports = self
sur le serveur et _.extend(window, self)
sur le client (remplacer _.extend
avec un autre extend
le cas échéant).