Разоблачить API JavaScript с помощью Coffeescript - PullRequest
14 голосов
/ 13 мая 2011

Я недавно начал использовать coffeescript, и мне было любопытно, каков «правильный» способ выставить объект, который я создаю с Coffeescript, на другие страницы javascript.Из-за функциональности упаковки кофейных текстов допустимо ли вызывать 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"

Ответы [ 2 ]

5 голосов
/ 13 мая 2011

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

4 голосов
/ 23 марта 2012

Вы можете еще больше упростить синтаксис, например, если у вас есть 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
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...