1

在过去几天沮丧地试图将我的代码重构为最佳设计模式后,即显示模块模式,甚至只是满足于简单的命名空间,我得出的结论是,对我来说,优雅设计的优点破坏视觉工作室智能感知支持的缺点超过了模式。

因此,我采用以下解决方案:

以下列方式声明模块:

var namespaceprefix_someModule = new function(){

  function privatemethod(){}

  this.publicmethod = function(){};

}

我愿意为拥有 5 个全局变量付出代价。作为回报,代码可以整齐地划分为不同文件上的功能模块,并具有强大的智能感知支持。

我想知道这里是否有人提出替代解决方案。

4

2 回答 2

2

new出于这个原因,您真的不应该在运算符中使用该模式。相反,使用

var namespaceprefix_someModule = (function(){

    function privatemethod(){}

    return {
        publicmethod: function(){}
    };
})();

我不确定,但我认为 VS 可以识别这种模式。

于 2012-09-05T17:54:00.163 回答
1

我最终决定的是设计代码,以便.在投入生产时可以轻松地将下划线替换为(点)。这样,我使用完整的 IntelliSense 进行开发,最后只得到一个全局变量。

在开发过程中,一个模块如下所示:

namespace_module1 = (function(){

   function private(){};

   function public(){};

   return {
     public: public
   }

})();

主模块通过将一个模块中的事件与另一个模块的公共功能链接起来充当中介角色。看起来像:

var namespace = (function(){

   var module1 = namespace_module1;
   var module2 = namespace_module2;

   module1.on('someevent', module2.publicfunction);

})();
于 2012-09-05T22:32:55.143 回答