编写对代码完成和代码检查友好的Javascript库
作者:互联网
我最近制作了自己的Javascript库,最初使用了以下模式:
var myLibrary = (function () {
var someProp = "...";
function someFunc() {
...
}
function someFunc2() {
...
}
return {
func: someFunc,
fun2: someFunc2,
prop: someProp;
}
}());
问题是我不能真正使用代码完成功能,因为IDE不知道函数文字将返回的属性(顺便说一句,我正在使用IntelliJ IDEA 9).
我查看了jQuery代码并尝试执行以下操作:
(function(window, undefined) {
var myLibrary = (function () {
var someProp = "...";
function someFunc() {
...
}
function someFunc2() {
...
}
return {
func: someFunc,
fun2: someFunc2,
prop: someProp;
}
}());
window.myLibrary = myLibrary;
}(window));
我尝试过,但是现在我遇到了另一个问题. IDE也不是完全可以使用myLibrary.
我现在解决问题的方式是这样的:
var myLibrary = {
func: function() { },
func2: function() { },
prop: ""
};
myLibrary = (function () {
var someProp = "...";
function someFunc() {
...
}
function someFunc2() {
...
}
return {
func: someFunc,
fun2: someFunc2,
prop: someProp;
}
}());
但这似乎有些笨拙,而且我无法确切弄清楚jQuery是如何做到的.我还有一个问题是如何使用任意数量的参数处理函数.
例如,jQuery.bind可以使用2或3个参数,并且IDE似乎没有抱怨.我试图对我的库做同样的事情,其中一个函数可以接受0个参数或1个参数.但是,IDE会抱怨并警告未发送正确数量的参数.我该如何处理?
编辑
我开始怀疑这是否是Idea9问题,因为jQuery也有同样的问题.我似乎在其他项目中没有这个问题.
解决方法:
我正在将IDEA与yahoo模块模式一起使用,并且可以完成自动完成功能. Google for yahoo模块模式.
http://www.yuiblog.com/blog/2007/06/12/module-pattern/
http://ajaxian.com/archives/a-javascript-module-pattern
TEST = function() {
var SOME_CONSTANT='asd';
function privateStuff(){
var a = 'asd';
return a;
}
return{
someArray:[],
someMethod: function(foo, bar){
var foo = *1
}
,
myProperty:'test'
}
}();
TEST.*2
用* 1和* 2标记了我尝试自动完成的地方.
在* 1中,我得到了SOME_CONSTANT和privateStuff方法,如果我输入了它.(自动完成)我可以访问return {}块内的所有方法和属性.
当我在* 2上尝试自动完成时,我在return {}块中获取了所有方法和属性.
SOME_CONSTANT和privateStuff方法在那里不可见,因为它们是“私有”的.
对我来说,自动完成水平是相当不错的.
标签:code-inspection,javascript-framework,code-completion,javascript 来源: https://codeday.me/bug/20191024/1918296.html