为大型代码库编写适当的可维护可读jQuery的行业和社区最佳实践是什么?

时间:2008-10-17 11:15:03

标签: javascript jquery oop readability

来自Ruby背景,我习惯用类和方法等编写所有代码。我非常了解javascript,但我是jQuery及其最佳实践的新手。

显然,有一百万种方法可以在javascript中模拟类。但是,真实世界中真正使用的jQuery社区是什么?

具体的例子是理想的。或链接到真实的生产代码。链接到虚构的理想代码也会有所帮助。

谢谢!

3 个答案:

答案 0 :(得分:3)

这不适用于jQuery,但我喜欢在我自己的代码中模拟类的对象文字语法。

http://ajaxian.com/archives/show-love-to-the-object-literal

我倾向于经常使用类似这样的(简化)框架:

var Widget = {

    sound:'bleep',

    load:function(){

        // do stuff here that doesn't need to wait until the DOM is ready.

        // Inside an anonymous function (such as the 'click' handler below),
        // 'this' loses its scope and no longer refers to the widget object.
        // To retain a reference to the widget object, assign 'this' to a
        // variable. I use an underscore... some people like 'self':
        var _ = this;

        // when the DOM is ready, run the init "method":
        $(document).ready(function(){
            _.init(); // the underscore now refers to the widget object
        });

    },

    init:function(){

        var _ = this;

        // whenever a <p class="noisy"> element is clicked, call makeNoise()
        $("p.noisy").click(function(){
            _.makeNoise();
        });

    },

    makeNoise:function(){

        alert(this.sound); // alert 'bleep'

    }

};

Widget.load();

修改:有关使用'this'关键字的更多信息,如上所述:

http://groups.google.com/group/jquery-en/browse_thread/thread/328d07f90467cccc?pli=1

答案 1 :(得分:2)

我从这里开始寻找灵感:

http://errtheblog.com/posts/73-the-jskinny-on-jquery

答案 2 :(得分:0)

我在当前项目中使用jQuery遇到了同样的问题,我对jQuery也有同感。这就像是大隐秘的方法链。当它变得越来越大时,需要更多时间来理解我之前写的内容。

我发现制作更易维护的jQuery代码的唯一方法是Module Pattern。也许它很有用。你也可以查看有关同一问题的Ajaxian jQuery vs. Prototype: OO JavaScript with or without training wheels文章。