有没有办法强制 NetBeans JavaScript 自动完成?
Is there a way to force NetBeans JavaScript Autocomplete?
我正在开发一些 JavaScript 用于我正在开发的 CMS。
我已经这样封装了我的代码:
(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
、"hippie"代码补全。它直接完成一些匹配结果,如果完成的项目不是你想要的,你可以按住 Ctrl+K 得到另一个自动完成的项目(将替换之前插入的项目)。另一件事,你可以按 Ctrl+Space
2 次来获得 "full" 代码完成(意味着几乎所有来自其他 objects/variables)
更新:还有另一种使用 JSDoc 的方法,但它仅适用于 NetBeans 的开发版本,并将成为下一个 8.1 版本的一部分(您可以从 here 下载开发版本):
/**
* @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
*/
这样你就必须为你的库创建这个 "documentation" 并将它放在你项目的 JS 文件中的某个地方(可能是你的库的非缩小 JS 文件)。使用这个 @typedef 特性,你几乎可以学习任何代码补全,即使它甚至不在你的代码中)。当然还有一些问题有待解决(这是一个开发版本)...
我尝试了另一种对我有用的方法。
我复制了我的 JavaScript 文件并删除了封装。所以我现在有两个文件,"real" 一个有封装,另一个 "working" 没有封装。现在,当我尝试使用自动完成时它起作用了。
这样做的缺点是你会产生噪音,因为有一个文件不适用于网络应用程序,你必须在每次更新原始文件时更新它。但它使编码更容易与自动完成的魔力。当您加载 html 时,您只是不引用 "working" 文件。
所以,这将是我的 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
的正确自动完成。
我正在开发一些 JavaScript 用于我正在开发的 CMS。
我已经这样封装了我的代码:
(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
、"hippie"代码补全。它直接完成一些匹配结果,如果完成的项目不是你想要的,你可以按住 Ctrl+K 得到另一个自动完成的项目(将替换之前插入的项目)。另一件事,你可以按 Ctrl+Space
2 次来获得 "full" 代码完成(意味着几乎所有来自其他 objects/variables)
更新:还有另一种使用 JSDoc 的方法,但它仅适用于 NetBeans 的开发版本,并将成为下一个 8.1 版本的一部分(您可以从 here 下载开发版本):
/**
* @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
*/
这样你就必须为你的库创建这个 "documentation" 并将它放在你项目的 JS 文件中的某个地方(可能是你的库的非缩小 JS 文件)。使用这个 @typedef 特性,你几乎可以学习任何代码补全,即使它甚至不在你的代码中)。当然还有一些问题有待解决(这是一个开发版本)...
我尝试了另一种对我有用的方法。
我复制了我的 JavaScript 文件并删除了封装。所以我现在有两个文件,"real" 一个有封装,另一个 "working" 没有封装。现在,当我尝试使用自动完成时它起作用了。
这样做的缺点是你会产生噪音,因为有一个文件不适用于网络应用程序,你必须在每次更新原始文件时更新它。但它使编码更容易与自动完成的魔力。当您加载 html 时,您只是不引用 "working" 文件。
所以,这将是我的 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
的正确自动完成。