【问题标题】:Small, jQuery-like library design?小型、类似 jQuery 的库设计?
【发布时间】:2011-11-05 16:14:56
【问题描述】:

我需要构建一个只有几千字节大小的小型 JavaScript 库。为此,我想使用一些 jQuery 非常有名的设计选择。

以下是我目前拥有的两个外壳,我想知道是否有人可以建议我哪种样式可能是更好的设计选择。

var jQuery, $;

(function() {

    jQuery = $ = function(selector, context)
    {
        return new JQuery(selector, context);
    };

    var JQuery = function(selector, context)
    {
        // ...
        return this;
    };

    jQuery.fn = JQuery.prototype = {
        example: function()
        {
                //...
            return this;
        }
    };

}());

还有一个稍微修改过的 jQuery shell 版本。

(function(window, undefined)
{
    var jQuery = function(selector, context)
    {
        return new jQuery.fn.init(selector, context);
    };

    jQuery.fn = jQuery.prototype = {
        init: function(selector, context)
        {
            // ...
            return this;
        },
        example: function()
        {
            //...
            return this;
        }
    }

    jQuery.fn.init.prototype = jQuery.fn;
    window.jQuery = window.$ = jQuery;

})(window);

我还想知道我是否对其中任何一个做出了错误的设计选择。 JavaScript 不是我的主要语言,所以我想确保我没有做错任何事情。

【问题讨论】:

    标签: jquery javascript


    【解决方案1】:
    • 将名称 jQuery 用于库(实际上不是 jQuery)首先是一个非常糟糕的设计选择。
    • 第一个示例没有 window 前缀作为全局变量,这不利于可读性和严格模式合规性
    • 在第二个示例中设置 jQuery.prototype 似乎毫无意义
    • 我更喜欢构造函数是fn 成员的版本,因此可以从外部访问

    【讨论】:

    • 感谢您的建议,我会继续进行更改。另外,我不会将最终库命名为“jQuery”——我只是将其用作示例,因为这完全基于该库的设计。
    猜你喜欢
    • 1970-01-01
    • 2010-11-18
    • 1970-01-01
    • 2016-10-19
    • 2010-10-01
    • 2012-08-28
    • 2010-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多