取决于这是客户端还是服务器端代码,有两种稍微不同的方法。
客户端:在这里,我们重视的事情,应该可以跨文件的全局命名空间(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')
Both:基本上,我们根据所处的环境选择是运行服务器端还是客户端代码。一种常见的方式来做到这一点:
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
函数)。
如果您使用Rails,则必须确保在尝试引用它之前调用任何相关的coffeescript文件*。一旦在需要其他文件的文件中设置了“require”指令,您就可以访问变量等。 – 2015-08-09 13:40:10