在CoffeeScript中共享类?

时间:2016-09-06 19:46:26

标签: coffeescript

这个article解释了如何在CoffeeScript中实现“模块模式”。

如何在javascript文件之间共享CoffeeScript class

例如:

class A 
  constructor: (@x) ->

如何在两个CoffeeScript文件之间共享A

2 个答案:

答案 0 :(得分:0)

使用:

window.A = class A 
  constructor: (@x) ->

或:

class window.A
  constructor: (@x) ->

两者都将编译为:

(function() {
  var A;

  window.A = A = (function() {
    function A(x) {
      this.x = x;
    }

    return A;

  })();

}).call(this);

如果您愿意,也可以在两个地方@A使用window.A,因为this指的是任何功能之外的window

答案 1 :(得分:0)

了解UMD。您可以通过以下方式实现UMD标头:

((root, factory) ->
  ### istanbul ignore next ###
  switch
    when typeof define is 'function' and define.amd
      define ['underscore', 'backbone-forms'], factory
    when typeof exports is 'object'
      factory require('underscore'), require('backbone-forms')
    else
      factory root._, root.Backbone.Form
  return
) @, (_, Form) ->
  class A 
    constructor: (@x) ->

underscorebackbone-forms是示例依赖项。