Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery中变量和函数的单字母名称,JavaScript_Javascript_Jquery_Twitter_Short - Fatal编程技术网

jQuery中变量和函数的单字母名称,JavaScript

jQuery中变量和函数的单字母名称,JavaScript,javascript,jquery,twitter,short,Javascript,Jquery,Twitter,Short,我在查看Twitter的静态脚本时注意到,所有变量和函数都只有一个字符长,为什么以及如何做到这一点?这与性能有关吗?如果是这样的话,为什么他们不给网站上的所有元素起一个简短的名字,可能是2个字符,而不是1个字符,以避免任何冲突 例如: (function (A) { A.fn.isScreenNameField = function () { return this.each(function () { var M = A(this); var F = A

我在查看Twitter的静态脚本时注意到,所有变量和函数都只有一个字符长,为什么以及如何做到这一点?这与性能有关吗?如果是这样的话,为什么他们不给网站上的所有元素起一个简短的名字,可能是2个字符,而不是1个字符,以避免任何冲突

例如:

(function (A) {
A.fn.isScreenNameField = function () {
    return this.each(function () {
        var M = A(this);
        var F = A("#signup_username_url");
        var E = A("#screen_name_info");
        var D = A("#avail_screenname_check_indicator");
        var O;
        var C;
        var I;
        var N = M.val();
        var G = N;
        var H = N != "";
        var Q = /[a-zA-Z0-9_]/;

        function K() {
            if (H) {
                F.html(M.val())
            }
        }
        function L() {
            M.trigger("show-info");
            E.hide();
            D.show()
        }
        function B() {
            E.show();
            D.hide()
        }
        function P() {
            G = O;
            jQuery.ajax({
                type: "GET",
                url: "/users/username_available",
                data: {
                    username: O
                },
                dataType: "json",
                success: function (R) {
                    if (C) {
                        var S = R.msg;
                        if (R.valid) {
                            M.trigger("is-valid");
                            F.removeClass("invalid").addClass("valid")
                        } else {
                            M.trigger("is-invalid", R.msg);
                            F.addClass("invalid").removeClass("valid")
                        }
                    }
                },
                beforeSend: null,
                complete: function () {
                    clearTimeout(twttr.timeouts.availabilityTimeout);
                    B()
                }
            })
        }
        function J(R) {
            O = M.val();
            clearTimeout(twttr.timeouts.availabilityTimeout);
            C = O.match(Q);
            if (!C) {
                G = O;
                B();
                return
            }
            if (O == G) {
                return
            }
            L();
            twttr.timeouts.availabilityTimeout = setTimeout(P, 2000)
        }
        M.isSignupFormField({
            validateWith: function (R) {
                if (isBlank(R)) {
                    return _("Please enter a user name")
                } else {
                    P()
                }
            },
            allowInput: Q
        });
        M.keyup(function (R) {
            if (jQuery.inArray(R.keyCode, [16, 17, 18, 20, 27, 33, 34, 35, 37, 38, 39, 40, 144]) == -1) {
                if (M.val() != "") {
                    H = true
                } else {
                    M.trigger("show-info")
                }
                K();
                J()
            }
        });
        M.bind("value-changed", P);
        M.bind("custom-validate", P)
    })P
}
})

这个脚本已经“缩小”,这是一种自动的技术,用较短的名称替换变量,而不改变功能。例如,见。目标是在将脚本发送到客户端时减少下载时间和带宽。

Javascript是客户端的,因此您必须加载脚本。我认为,要下载的文本越少,性能就越好。

许多javascript项目通过“迷你程序”运行代码,使代码越小。这样可以缩短浏览器下载库所需的时间。大多数项目还提供一个非小型版本供开发人员阅读:

示例如下:
关于他们为什么这样做,有很多原因,举一个常见的原因:


减少脚本的文件大小,因为很多人使用twitter。

他们通过类似的方式运行脚本,以减少大小,从而减少加载所需的时间

所有这些都是为了减少网站加载时间。

近年来,这个话题已经成为一个新的领域,特别是由于史蒂夫·斯塔德斯的演讲:

我认为克罗克福德将这种特殊的技术称为“模糊处理”。JSMin不更改变量名,因为Crockford不喜欢混淆,因为他认为混淆太可能导致错误。缩小和“模糊化”。