在使用显示模块模式时,如何查看eclipse中的轮廓?

时间:2012-04-18 11:25:55

标签: javascript eclipse jsdoc revealing-module-pattern

我正在重构一些我们拥有的Javascript代码,除此之外我还改变了它以利用揭示模块模式。代码看起来更整洁,它工作正常,但我在大纲视图中看不到这些功能。我将顶级命名空间var视为var,但您无法展开它以查看其中的函数。

让我们说代码看起来像这样:

function myFunc1() {}
function myFunc2() {}

在这种情况下,您会在大纲视图中看到这两个功能。但是如果你改成它:

var myNamespace = function()
{
  function myFunc1() {}
  function myFunc2() {}

  return {
    name: "myNamespace",
    myFunc1: myFunc1,
    myFunc2: myFunc2
  }
}();

然后大纲视图只显示myNamespace var。我试过看但却找不到能够正确显示层次结构的视图。有没有人知道一种观察这种情况的方法,还是eclipse无法做到这一点?

4 个答案:

答案 0 :(得分:23)

添加:

/**
 * @memberOf myNamespace
 */

在每个函数定义之前恢复层次结构。

你会在这里找到更多有趣的标签来记录你的代码:
How I Introduced JsDoc into a JavaScript project – and found my Eclipse Outline

答案 1 :(得分:5)

一种方法是将其称为如下。 按原样定义它,但不要自行执行它。 确保原型是一个空对象,然后尝试调用它。 它的工作方式相同,但会恢复大纲,您无需在每个函数前添加注释。

var myNamespace = (function()
{
  function myFunc1() {}
  function myFunc2() {}

  return {
    name: "myNamespace",
    myFunc1: myFunc1,
    myFunc2: myFunc2
  }
});
myNamespace.prototype = {};
myNamespace();

答案 2 :(得分:2)

在大纲中未显示myFunc1()等似乎是一个在3.2中标记为已修复的错误。但是它没有在4.2中修复。当处理数百个函数的非常大的文件时,这肯定是一个巨大的痛苦,并且只有var名称出现在大纲中。我祈祷它被修复。

https://bugs.eclipse.org/bugs/show_bug.cgi?id=236202

https://bugs.eclipse.org/bugs/show_bug.cgi?id=281374#c1

/ **  * @memberOf myNamespace  * / 不适合我。当我在myFunc1()上面添加它时,即使我关闭并打开文件,它也不会在轮廓中显示它。

有趣的是,我的20个左右的函数中有4个确实显示在大纲中,但是那些工作的和没有工作的那些除了那些工作都具有this.xxx的那些之外没有区别(但是如果我添加this.dummy;对于隐形函数它没有帮助)

这个半成品:     myNameSpace.prototype = {};     myNameSpace对象;

但是你不能这样调用它的功能: myNameSpace.myFunc1();

答案 3 :(得分:0)

我正在使用eclipse / Kepler。使用上面的建议我设法得到大纲视图。但提案(Ctrl-space)不起作用。有些fn是可见的,有些则不是。没有要检测的模式。

在阅读http://usejsdoc.org/#JSDoc3_Tag_Dictionary之后,我用@memberof替换了所有@memberOf,现在一切都按预期工作(直到下一个问题出现......)