Подтвердить что ты не робот

Выставить javascript api с coffeescript

Недавно я начал использовать coffeescript, и мне было любопытно, что такое "правильный" способ открыть объект, который я создаю с помощью Coffeescript, на другие страницы JavaScript. Из-за функциональности упаковки coffeescripts приемлемым является поведение вызова window.coffeeObject = externalObject.

Пример

example.coffee

externalObject = 
   method1: -> 'Return value'
   method2: -> 'Return method2'

window.myApi = externalObject

example.js - скомпилировано из example.coffee

(function() {
  var externalObject;
  externalObject = {
    method1: function() {
      return 'Return value';
    },
    method2: function() {
      return 'Return method2';
    }
  };
  window.myApi = externalObject;
}).call(this);

other.js

alert(myApi.method1()) // Should return "Return value"
4b9b3361

Ответ 1

Да, правильно. В качестве альтернативы вы можете использовать define @myApi = { foo: -> }, потому что this есть window в корневом контексте файла.

Ответ 2

Вы также можете упростить синтаксис, например, если у вас было 2 внутренних функции

example.coffee

myPrivateFunction = ->
    "return 1"

myPrivateFunction2 = ->
    "return 2"

@myApi = {
    myFunction : myPrivateFunction,
    myFunction2 : myPrivateFunction2
}

example.js

this.myApi = {
  myFunction: myPrivateFunction,
  myFunction2: myPrivateFunction2
};

В основной области файла @ будет window.

Затем вызовите из другого места на window.myApi.myFunction()

Если вы хотите сопоставить имена внешних функций с теми же внутренними именами, если вы не укажете пары key : value, то по умолчанию будет использоваться только строковое значение.

example.coffee

@myApi = {
    myPrivateFunction,
    myPrivateFunction2
}

example.js

this.myApi = {
  myPrivateFunction: myPrivateFunction,
  myPrivateFunction2: myPrivateFunction2
};