Задать вопрос
@TheDigitalMadness
Программист

Почему на сайтах в js коде используются непонятные однобуквенные переменные и что они значат?

Копаюсь во внутрянке разных сайтов, ищу для себя примеры "правильного" программирования фронтенда. Сам занимаюсь бэкэндом, но боюсь, что кроме меня в команде программировать фронтенд никто не сможет все равно. По самому программированию вопросов нет, js понятен. Что непонятно - то быстро гуглится. Тем не менее, почти на всех сайтах вижу такую лабуду (такого типа):

(e, r, t) => {
        var n = new Error;
        e.exports = new Promise(( (e, r) => {
            if ("undefined" != typeof mfAgreement)
                return e();
            t.l("/diary/mfAgreement/mfAgreementRemoteEntry.js", (t => {
                if ("undefined" != typeof mfAgreement)
                    return e();
                var s = t && ("load" === t.type ? "missing" : t.type)
                  , i = t && t.target && t.target.src;
                n.message = "Loading script failed.\n(" + s + ": " + i + ")",
                n.name = "ScriptExternalLoadError",
                n.type = s,
                n.request = i,
                r(n)
            }
            ), "mfAgreement")
        }
        )).then(( () => mfAgreement))
    }

Не обращайте внимания на сам код: я взял рандомный участок кода с одного сайта. Суть не в этом. Вопрос о том, что это всё за переменные "s", "t", "n" и т.д.? Я не прошу разъяснять мне, что именно делают данные переменные в моем примере, я хочу понять, почему в большинстве сайтов используется стиль написания через однобуквенные переменные? Это какой-то паттерн? Хочу уточнить, что в большинстве случаев файлы имеют приписку bundle. Погуглил, понял, что это за зверь, но он, вроде бы, не создает такую бредятину сам. Посему спрашиваю у вас, т.к. все, что я нагугливал - информация, никак не относящаяся к вопросу, в большинстве своем для программирования стилем динозавров до н.э.
  • Вопрос задан
  • 14825 просмотров
Подписаться 1 Простой 3 комментария
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Потому что для рабочей версии сайта чаще всего используют минифицированные версии файлов.
Ответ написан
Пригласить эксперта
Ответы на вопрос 7
@Terra_Main
Данный код сгенерирован компилятором TypeScript. То есть, код был написан не на js а на ts. Поскольку я ОЧЕНЬ много работал с таким кодом, когда писал моды для браузерный игр, могу сказать, что чтобы понять смысл этих переменных, нужно найти функцию, которая находиться почти в самом конце кода, выглядящая примерно так:
function s(i) {
        var n = t[i];
        if (void 0 !== n) return n.exports;
        var o = t[i] = {exports: {}};
        return e[i].call(o.exports, o, o.exports, s), o.exports
    }

или
function t(o) {
        var r = e[o];
        if (void 0 !== r)
            return r.exports;
        var a = e[o] = {
            exports: {}
        };
        return n[o](a, a.exports, t),
        a.exports
    }

Эта функция является загрузчиком модулей, а (e, r, t) => {...} - модуль, который загружается. Если ты скинешь, как выглядит твоя s-функция (так я называю выше описанную функцию загрузки модулей) я смогу тебе помочь
Ответ написан
VoidVolker
@VoidVolker Куратор тега JavaScript
Dark side eye. А у нас печеньки! А у вас?
Да просто чтобы не печатать какие-то длинные названия переменных, когда там что-то типа стандартных exports, error, exception, target или это просто часть стандартного интерфейса какого-то модуля, который повторяется в проекте миллион раз, а так же для сокращения видимого объема кода и облегчения его восприятия.
Ответ написан
Комментировать
@artem-dainov
Php, java, js. Boot spring, jquery, git
Ваш вариант анонимки не имеет ссылку, а значит this не доступен, а то обычно e это event или error, t обычно this родителя.
Ответ написан
@Thunderinthegrass
Это минимизированный js-код, есть сборщики проекта, или еще таск-раннеры их называют, такие как gulp, webpack, stylus, может еще какие есть, не помню. Эти сборщики выполняют некоторые задачи по ускорению процесса разработки и оптимизации уже готовой верстки. Среди прочего - минимизируют js, заменяя человеческие названия переменных буквами. Минимизированный код человеку понять труднее, но он и предназначен не для человека, а для браузера, браузеру без разницы, интуитивно понятна переменная, или это просто буква, зато на чтение одной буквы тратится меньше ресурсов
Ответ написан
@HarutAdyan
Я не программист но иногда копаюсь там сям, и всегда думал что это своеобразная защита от копирования.
Ответ написан
Комментировать
@Reallamos
Это скомпилированный код, который соответственно максимально уменьшен компилятором.
Забавно, что у себя в команде вы бэкендер, который уверен что напишет фронт лучше фронтендеров. И при этом вот такие вопросы )
Ответ написан
@mrererer
Лучше поискать примеры кода на github или code pen
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы