Как документировать исходный код CoffeeScript с помощью JSDoc?
У меня есть код, написанный на CoffeeScript, и я хочу оптимизировать сгенерированный JavaScript с помощью Google Closure Compiler, поэтому эти файлы должны быть документированы с помощью JSDoc.
Мой вопрос в том, как я могу документировать файлы *. coffee для создания javascript, содержащего рабочий JSDoc для компилятора закрытия?
Еще один вопрос: есть ли способ сохранить однострочный комментарий в *. coffee?
Ответы
Ответ 1
Я бы советовал против этого. JSDoc-ing весь ваш код - трудоемкий процесс, который вряд ли принесет пользу от компилятора Closure. Вне самой Google, вряд ли кто-то это делает. CoffeeScripters/JavaScript обычно предпочитают легкие инструменты для документации, такие как docco.
Кроме того, в то время как Closure Compiler имеет за собой фирменное наименование Google, UglifyJS оказался более эффективным инструментом для минимизации во многих случаях, (jQuery недавно переключился на него.)
Еще один вопрос: есть ли способ сохранить однострочный комментарий в *. coffee?
Да:
### foo ###
или
`// foo`
Ответ 2
Вход CoffeeScript:
### define function variable before block to avoid code being appended to closing part of JSDoc comment ###
cube = null
###*
* Function to calculate cube of input
* @param {number} Number to operate on
* @return {number} Cube of input
###
cube = (x) -> x*x*x
Вывод JavaScript из окна cmd для: coffee -cpb src.coffee
// Generated by CoffeeScript 1.6.3
/* define function variable before block to avoid code being appended to closing part of JSDoc comment*/
var cube;
cube = null;
/**
* Function to calculate cube of input
* @param {number} Number to operate on
* @return {number} Cube of input
*/
cube = function(x) {
return x * x * x;
};
Изменить
Как подробно описано в другом ответе. У CoffeeScript 1.7.1 есть лучший метод для решения этой проблемы.
Ответ 3
Поскольку я не могу напрямую ответить на Billy выше, кажется, что CoffeeScript 1.7.1 лучше поддерживает это:
###*
# Sets the language and redraws the UI.
# @param {object} data Object with `language` property
# @param {string} data.language Language code
###
handleLanguageSet: (data) ->
выходы
/**
* Sets the language and redraws the UI.
* @param {object} data Object with `language` property
* @param {string} data.language Language code
*/
handleLanguageSet: function(data) {}
Ответ 4
Вам придется экспериментировать (много), но ###
комментарии - ваш друг.
Компилятор coffee- script будет хранить комментарии, которые используют форму ###
(docs здесь).
Я попытался создать действительно простой фрагмент JsDoc
для функции, используя функцию "try coffeescript" на сайте:
###* Doc for this function.###
foo = -> 'bar'
Это дало:
/** Doc for this function.
*/
var foo;
foo = function() {
return 'bar';
};
Я не эксперт в JsDoc
, но я предполагаю, что оператор var foo;
выше функции вызовет проблему. Если раньше у вас был foo
, maybee..
Было бы здорово узнать, как это происходит.
Ответ 5
class
имеет проблему
###* this is a class ###
class hello
v: 4
дает, что
// Generated by CoffeeScript 2.0.0-beta5
/** this is a class */
var hello;
hello = (function() {
class hello {};
hello.prototype.v = 4;
return hello;
})();
и он недействителен в JSDoc