我有一些用 CoffeeScript 编写的代码,我想使用 Google Closure Compiler 优化生成的 JavaScript,因此需要使用 JSDoc 记录这些文件。
我的问题是,如何记录 *.coffee 文件以生成包含用于闭包编译器的工作 JSDoc 的 javascript?
还有一个问题:有没有办法在 *.coffee 中保留单行注释?
我有一些用 CoffeeScript 编写的代码,我想使用 Google Closure Compiler 优化生成的 JavaScript,因此需要使用 JSDoc 记录这些文件。
我的问题是,如何记录 *.coffee 文件以生成包含用于闭包编译器的工作 JSDoc 的 javascript?
还有一个问题:有没有办法在 *.coffee 中保留单行注释?
### 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
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 有更好的方法可以解决这个问题。
由于我无法直接回复上面的比利,看来 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) {}
您必须进行(很多)实验,但###
评论是您的朋友。
咖啡脚本编译器将保留使用表单的注释(此处###
的文档)。
我尝试JsDoc
使用站点上的“try coffeescript”功能为函数创建一个非常简单的片段:
###* Doc for this function.###
foo = -> 'bar'
这给了:
/** Doc for this function.
*/
var foo;
foo = function() {
return 'bar';
};
我不是专家JsDoc
,但我猜var foo;
函数上面的语句会产生问题。如果你之前foo
声明过,也许……
很高兴听到它的进展情况。
我建议不要这样做。对所有代码进行 JSDoc 处理是一个费力的过程,很可能从 Closure 编译器中几乎没有收益。在谷歌本身之外,几乎没有人这样做。CoffeeScripters/JavaScripters 通常更喜欢像docco这样的轻量级文档工具。
此外,虽然 Closure Compiler 背后有 Google 品牌名称,但在许多情况下,UglifyJS已被证明是更有效的缩小工具。(jQuery最近切换到它。)
还有一个问题:有没有办法在 *.coffee 中保留单行注释?
是的:
### foo ###
或者
`// foo`
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 中无效