A seconda che si tratti di codice client o lato server, esistono due approcci leggermente diversi.
lato client: Qui abbiamo allegare cose che dovrebbero essere disponibili attraverso i file al namespace globale (window
) come segue:
class window.ChatService
constructor: (@io) ->
Poi, in un altro file sia ChatService
e window.ChatService
consentirà l'accesso alla classe .
lato server: Qui dobbiamo usare exports
e require
. Nel file ChatService.coffee
, si avrebbe la seguente:
class exports.ChatService
constructor: (@io) ->
Quindi, per ottenere la cosa da un altro file è possibile utilizzare:
ChatService = require('ChatService.coffee').ChatService
Nota: Se ci sono più classi che si stanno ottenendo da ChatService.coffee, questo è un posto dove dict di CoffeeScript disimballaggio brilla davvero, come ad esempio:
{ChatService, OtherService} = require('ChatService.coffee')
Entrambi: Fondamentalmente, scegliamo se eseguire il codice lato server o lato client in base all'ambiente in cui ci troviamo.Un modo comune per farlo:
class ChatService
constructor: (@io) ->
if typeof module != "undefined" && module.exports
#On a server
exports.ChatService = ChatService
else
#On a client
window.ChatService = ChatService
per farlo:
if typeof module != "undefined" && module.exports
#On a server
ChatService = require("ChatService.coffee").ChatService
else
#On a client
ChatService = window.ChatService
La clausola else del secondo blocco possono essere saltati, poiché ChatService
riferisce già al riferimento attaccato window
.
Se avete intenzione di definire un sacco di classi in questo file, potrebbe essere più facile definirli come:
self = {}
class self.ChatService
E poi attaccarle come module.exports = self
sul server e sul client _.extend(window, self)
(sostituire _.extend
con un'altra funzione extend
appropriata).
Se si utilizza Rails, è necessario assicurarsi che qualsiasi file coffeescript dipendente sia chiamato * prima * si tenta di fare riferimento a esso. Una volta impostate le direttive "require" nei file che effettivamente hanno bisogno degli altri, otterrete l'accesso alle variabili, ecc. –