繁体   English   中英

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

[英]Is there a way to force NetBeans JavaScript Autocomplete?

我正在开发一些要在正在使用的CMS中使用的JavaScript。

我已经封装了这样的代码:

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

现在,当我添加一个子命名空间并尝试在声明之外使用它时,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 2次以获得“完整的”代码完成(这意味着来自其他对象/变量的几乎所有内容)

更新:还有另一种使用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文件并删除了封装。 因此,我现在有两个文件,一个是“实际”文件,带有封装,另一个是“有效”文件,没有封装。 现在,当我尝试使用自动完成功能时,它可以工作。

不利的一面是,由于存在一个不适合该Web应用程序的文件,因此您会产生噪音,因此每次更新原始文件时都必须对其进行更新。 但是,借助自动完成的魔力,它使编码变得更容易。 加载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自动完成showSomething

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM