有没有办法强制NetBeans JavaScript自动完成

Is there a way to force NetBeans JavaScript Autocomplete?

本文关键字:JavaScript NetBeans 有没有      更新时间:2024-05-28

我正在开发一些JavaScript,以便在我正在开发的CMS中使用。

我把我的代码封装成这样:

(function(){
    var libraryName = {};
    ...code...
    window.libraryName = libraryName;
}())

现在,当我添加一个submespace并尝试在声明之外使用它时,NetBeans(8.0.2)的自动完成函数不起作用。像这样:

(function(){
    var libraryName = {};
    libraryName.subSet = {
            showSomething: function(){}
    };
    window.libraryName = libraryName;
}())
libraryName.subSet.showSomething(); // This works
libraryName.subSet. // No current autocomplete even when pressing CTRL+space

我想知道是否有办法告诉NetBeans如何自动完成,而不是猜测。

感谢

您可以使用Ctrl+K,即"嬉皮士"代码完成。它直接完成一些匹配结果,如果完成的项目不是你想要的,你可以继续按Ctrl+K来获得另一个自动完成的项目(将替换之前插入的项目)。另一件事是,您可以按Ctrl+Space两次以获得"完整"的代码完成(意味着几乎所有来自其他对象/变量的内容)

更新:使用JSDoc还有另一种方法,但它只适用于NetBeans的Dev构建,并且将成为下一个8.1版本的一部分(您可以从这里下载Dev构建):

/**
 * @typedef libraryName
 * @property {Function} showSomething description
 * @property {someProp} foo description
 */
/**
 * @typedef someProp
 * @property {Date} day description
 * @property {Number} num description
 */
/**
 * @typedef libraryName.someProp2
 * @property {Date} day description
 * @property {Number} num description
 */

这样,您就必须为您的库创建这个"文档",并将其放在项目中的JS文件中(可能是库的非缩小JS文件)。有了这个@typedef功能,你可以学习几乎任何东西的代码完成,即使它甚至不在你的代码中)。当然,还有一些问题需要解决(这是一个开发人员版本)。。。

我尝试了另一种对我有效的方法。

我复制了我的JavaScript文件并删除了封装。所以我现在有两个文件,一个是有封装的"真实"文件,另一个是没有封装的"工作"文件。现在,当我尝试使用自动完成功能时,它是有效的。

这样做的缺点是会产生噪音,因为有一个文件不是为网络应用程序准备的,每次更新原始文件时都必须更新它。但它通过自动完成的魔力使编码变得更容易。当您加载html时,您只是不引用"工作"文件。

因此,这将是我的main.js文件(例如在/js/main.js中)

(function(){
var libraryName = {};
libraryName.subSet = {
        showSomething: function(){}
};
window.libraryName = libraryName;
}())

main.tmp.js文件应该是这样的(例如在/tmp/main.tmp.js中)

var libraryName = {};
libraryName.subSet = {
        showSomething: function(){}
};

现在,当我执行libraryName.subSet.时,它会向我显示正确的showSomething自动完成。