【问题标题】:How can I view the outline in eclipse when using the revealing module pattern?使用显示模块模式时,如何在 Eclipse 中查看大纲?
【发布时间】:2012-04-29 19:17:09
【问题描述】:

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

假设以前的代码看起来像这样:

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

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

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

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

然后大纲视图只显示 myNamespace 变量。我尝试过寻找,但找不到真正能正确显示层次结构的视图。有谁知道查看这个的方法还是 eclipse 无法做到这一点?

【问题讨论】:

  • 弗朗索瓦的回答很有效。不得不依赖评论有点麻烦,但这是我见过的唯一解决方案。我注意到,如果你输入了一个不正确的@memberof,那么 Eclipse 大纲会出现注释而不是代码,所以你在使用它时需要小心。

标签: javascript eclipse jsdoc revealing-module-pattern


【解决方案1】:

添加:

/**
 * @memberOf myNamespace
 */

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

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

【讨论】:

  • 非常感谢。两个月后,甚至没有其他人提出建议,所以这显然是一个很难解决的问题。
  • 这就是我一直在寻找的东西 :)
  • 在我的默认 JS 支持的 PHP Neon 中似乎没有任何效果(根本)......还有什么应该知道的,启用......?
  • @BurninLeo:见this question。这是 Neon 中的一个错误,因为 JSDT 的核心元素被重写或切换到更可维护的软件组件。部分功能很快就恢复了,这非常少见,值得一提,但仍有一些有效的 JS 构造不能产生令人满意的轮廓。
  • 最后,我安装了 NetBeans 来编辑我 (Eclipse) 项目中的 JS 文件。非常好:)
【解决方案2】:

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

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

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

【讨论】:

  • 这是一个公平的答案,只是来的有点晚。不过,对于一个菜鸟来说,值得一票。
【解决方案3】:

在大纲中未显示 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 我的命名空间 */ 没有为我工作。当我在 myFunc1() 上方添加它时,即使我关闭并打开文件,它也不会在大纲中显示。

有趣的是,我的 20 个左右的函数中有 4 个确实出现在大纲中,但有效的和无效的没有区别,除了有效的都包含 this.xxx (但如果我添加 this.dummy; 到不可见的功能,它没有帮助)

这个半作品: myNameSpace.prototype = {}; 我的名字空间;

但是你不能这样调用它的函数: 我的名字空间.myFunc1();

【讨论】:

  • 是的,在 Eclipse 5.X 或任何 Kepler 中,建议的方法都不适合我。 JSDoc 生成漂亮的 HTML 页面,概述自调用的对象/命名空间,当您 ctrl + 空格时,Eclipse 可以建议/自动完成,但它拒绝概述对象! :(
【解决方案4】:

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

阅读http://usejsdoc.org/#JSDoc3_Tag_Dictionary 后,我将所有@memberOf 替换为@memberof,现在一切正常(直到出现下一个问题......)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多