[英]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.