编程语言
首页 > 编程语言> > 编写对代码完成和代码检查友好的Javascript库

编写对代码完成和代码检查友好的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