如何用JSDoc文件CoffeeScript源代码?
我有一些用CoffeeScript编写的代码,我想用Google Closure Compiler优化生成的JavaScript,所以这些文件需要用JSDoc来logging。
我的问题是,我如何文档* .coffee文件生成包含工作JSDoc为闭包编译器的JavaScript?
还有一个问题:有没有办法在* .coffee中保留单行注释?
我build议反对这个。 JSDoc你所有的代码是一个辛苦的过程,可能会产生Closure编译器没有什么好处。 除了Google本身,几乎没有人会这样做。 CoffeeScripters / JavaScripters通常更喜欢轻量级的文档工具,如docco 。
此外,虽然Closure编译器拥有Google品牌名称,但在许多情况下, UglifyJS已被certificate是更高效的缩小工具。 (jQuery 最近转向它。)
还有一个问题:有没有办法在* .coffee中保留单行注释?
是:
### foo ###
要么
`// foo`
CoffeeScriptinput:
### 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
来自windows cmd的JavaScript输出提示: 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有更好的方法来解决这个问题。
由于我无法直接回复上面的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) {}
你将不得不尝试(很多),但###
评论是你的朋友。
coffee-script编译器会保留使用###
表单的注释( 这里是 docs)。
我试图在网站上使用'try coffeescript'function为一个函数创build一个非常简单的JsDoc
片段:
###* Doc for this function.### foo = -> 'bar'
这给了:
/** Doc for this function. */ var foo; foo = function() { return 'bar'; };
我不是JsDoc
专家,但是我正在猜测var 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中是无效的