@ZaxapKramer
Больной верстальщик

Нужны ли вообще JQuery-like библиотеки?

Заметил, что использую в проектах JQuery-like микро-библиотеку (самописную, с необходимыми функциями) только на половину или того меньше.
Например, for, естественно, гибче, чем $.each-функция, то же и с querySelector(All) и многими другими... Единственный плюс JQuery - это цепочка функций, этого иногда не хватает, но это не панацея...
На деле в полной мере используются только $.fn.on и $.fn.off... Одно дело - когда в коде постоянно используется знак доллара ($, или что-то в этом роде), другое - чередование "ванильного" JavaScript и изредка $ в некоторых местах.
Это затрудняет чтение кода и вообще заставляет задуматься о том, целесообразно ли использовать такие библиотеки.

Конечно, можно сказать: "Не хочешь - не используй", но что делать с той же функцией $.fn.on? Просто заполнить один файл Element.protorype.on = function () { } и function ajax () { } с компанией? Или есть более элегантные решения для этого? Может, кто-то уже сталкивался с подобным? Люблю vanilla.js, конечно, но он не лишен некоторых недостатков...
  • Вопрос задан
  • 290 просмотров
Решения вопроса 3
Sanasol
@Sanasol Куратор тега JavaScript
нельзя просто так взять и загуглить ошибку
@GreatRash
jQuery - остаётся до сих пор незаменимой вещью для:
  • простой и удобной работы с событиями
  • простой и удобной работы с AJAX
  • простой и удобной работы с DOM (querySelectorAll даже половину не умеет от того, что умеет Sizzle)
  • простой и удобной работы с data

Если вас не устраивает jQuery (например размером), то:
  • вы упороты или легко подаётесь влиянию других упоротых
  • вы не знаете, что jQuery можно собирать под себя
  • вы не знаете, что начиная с версии 2.0 оттуда выпилена поддержка старинных браузеров
  • вы не знаете, что начиная с версии 3.0 туда добавляется поддержка новейших API (например requestAnimationFrame)

Собственно...
Ответ написан
Rou1997
@Rou1997
В каком смысле jQuery-like?
Если имеете в виду не средства для DOM и AJAX (которые и так очевидно что нужны), а именно "базовые" функции-helper'ы для работы с массивами, объектами и т.д., то и они тоже нужны, например:
function mylib_object_isEmpty(obj) {
    for(var prop in obj) {
        if(obj.hasOwnProperty(prop))
            return false;
    }

    return JSON.stringify(obj) === JSON.stringify({});
}

function mylib_object_concat(obj1, obj2) {
  for (var attrname in obj2) {
    obj1[attrname] = obj2[attrname];
  }
}


Сегодня я сам написал эти функции, и очевидно не зря, так как предварительно проверил нет ли готовых и обнаружил, что они есть только в новом ECMAScript, в старом нет, а каждый раз писать даже 3-5 лишних строчек кода - это долго и утяжеляет код.
Функции эти я применю в своем сериализаторе formс input'ами в JSON, сериализатор я пишу сам так как использовать фреймворк (Angular, React) в данном проекте я не хочу, а готовые отдельные функции сериализации не отвечают моим требованиям, например я хочу чтобы table сериализовался как массив из объектов-строчек, а в каждом объекте уже несколько input'ов как обычно.
Мой сериализатор вместе с этими функциями и другими будет именно библиотекой jQuery-like, а не фреймворком.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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