自动完成单个 JavaScript 对象,该对象在 Zend Studio 中扩展到多个文件(Eclipse PDT)

我的IDE是Zend Studio 8,它具有相对基本的JavaScript视角(与Eclipse PDT中的视角相似,如果不是相同的话)。在我正在处理的应用程序中,我们将一个基本对象扩展到多个文件,这有效地扼杀了自动完成功能。有关示例方案,请参阅下文...

// global.js
var App = {
    objectA: {
        method1: function() {},
        method2: function() {}
    },
    objectB: {
        method1: function() {},
        method2: function() {}
    }
};

// extend.js
App.Extend = {
    anotherMethod: function() {}
};

在这种情况下,键入会导致自动完成与 和 一起显示,但不显示 。如果我将 Extend 添加到 global.js 中的 App 变量,它将出现在自动完成中,但不会与另一个Method一起出现。如果我使用 ,autocomplete 将适用于该对象,因此问题似乎与代码跨多个文件扩展的事实无关。也许是因为单个对象分布在多个文件中......或其他东西。App.objectAobjectBExtendvar Extend = { /* code */ };Extend

有人有什么想法吗?


答案 1

由于 Javascript 不是一种编译语言,因此 IDE 不知道扩展类的位置。一些高级IDE试图通过将每个javascript文件视为单个项目的一部分来解决此问题,从而在后台将它们组合在一起以自动完成。

我玩过各种IDE,我唯一看到它工作的IDE是Jetbrain的Webstorm。


答案 2

VJET JS IDE for Eclipse 有一种使用 vjetdoc 语法跨多个文件进行扩展的方法。看看吧 -- http://www.ebayopensource.org/wiki/display/VJET/JS+code+assist+and+validation+for+two+or+more+js+files

它适用于对象文本,变量,函数。一旦你进入类概念,通常就有一个包装器函数来定义类。在VJET中,有vjo.ctype,它允许您在js中创建类。VJET 为使用此类型构造工具包定义的类提供正确的帮助。下面是一个示例:

Base.js
vjo.ctype("namespace.Base")
.endType();

App.js
vjo.ctype("namespace.App")
.inherits("namespace.Base")
.protos({
   doIt:function(){}
})
.endType()