Здравствуйте, The Minister, Вы писали:
TM>Планируется делать новый сайт с кучей JavaScript. Возникает вопрос: использовать jQuery или чистый JS?
Почему-то регулярно этот вопрос задается, даже здесь.
JQuery не нужен (все что в нем было хорошего, уже давно добавлнено в язык), чистый JS тоже (помтоу что это ужас).
Используй TS (typescript). Тем более если кода много (тогда статическая типизация просто необходима)
Современные инструменты его умеют из коробки, не сложнее чем javascirpt.
Здравствуйте, The Minister, Вы писали:
TM>Планируется делать новый сайт с кучей JavaScript. Возникает вопрос: использовать jQuery или чистый JS?
Код на jQuery конечно будет проще и его будет меньше, но имеет ли смысл сейчас изучать эту библиотеку? От практики в JS проку больше и ты будешь знать, что в твоем коде делается, не полагаясь на библиотеку.
Здравствуйте, bnk, Вы писали:
bnk> чистый JS тоже (помтоу что это ужас).
отсутствие строгой типизации это фича жс, зря вы так. без нее не было бы ни современных веб-апп. bnk>Используй TS (typescript). Тем более если кода много (тогда статическая типизация просто необходима)
пишите меньше кода)) жс модульный. редакторы обладают изумительной поддержкой.
Здравствуйте, The Minister, Вы писали:
TM>Планируется делать новый сайт с кучей JavaScript. Возникает вопрос: использова1ть jQuery или чистый JS?
если хадркорно, то fetch + rxjs но! я сравнивал реалворд аппы в лайтхаузе, перф у ванильных решений ниже чем у каркасов.
если нужна простая отладка в браузере, то лучше вью не найти. если нужен максимальный перф и скорость разработки svelte.dev
Если бэк на аспнет, то стоит обратить внимание на blazor.net(если не планируется много кастомного js hmtl).
да, спланируйте нужны ли будут сторонние компоненты, вроде их больше всего в реакте(тормозной), потом вью и дальше свелт,
да, чуть не забыл совсем новый тренд https://twinspark.js.org/
Здравствуйте, Разраб, Вы писали:
bnk>> чистый JS тоже (помтоу что это ужас). Р>отсутствие строгой типизации это фича жс, зря вы так. без нее не было бы ни современных веб-апп.
Фича это отсутствие статической типизации.
А отсутствие строгой типизации это бага.
Самое забавное, что TS её не лечит. (Это не в его силах).
I'm a sewer mutant, and my favorite authors are Edgar Allan Poo, H.G. Smells and George R.R. Martin.
(В обсуждаемом случае, кстати говоря, jQuery ещё и улучшает язык запросов, так что всё сводится к простому запрос.обработка();).
Как и в случае с некоторыми другими языками поганые снобы не хотят делать стандартную библиотеку удобной и попсовой, но, к счастью, в отличие от других языков пользоваться ей необязательно, пока jQuery поддерживается везде.
I'm a sewer mutant, and my favorite authors are Edgar Allan Poo, H.G. Smells and George R.R. Martin.
Здравствуйте, The Minister, Вы писали:
TM>Планируется делать новый сайт с кучей JavaScript. Возникает вопрос: использовать jQuery или чистый JS?
Хотите не используйте, но без jquery редко получается написать, здесь же мало желания разработчика. Даже если на начальном этапе целенаправленно избегать jquery с каждым новым компонентом/внешней либой риск использования jquery растет, и обязательно попадется либа, которая внутри использует jquery.
Здравствуйте, The Minister, Вы писали:
TM>Планируется делать новый сайт с кучей JavaScript. Возникает вопрос: использовать jQuery или чистый JS?
я хоть и не веб разраб но с фронтом связан.
писать только на TS, более строгая псевдотипизация делает код понятнее, если вы все можете сделать на ванильном TS/JS то наверное в jQuery наверное смысла нет.
если нужна пара фишек из jQuery то может найти либу, которая реализует только это, но в этом случае если не особо известная либа то jQuery веры больше.
A>$('dialog')
A> .addClass('text-center')
A> .find('div textarea')
A> .addClass('width-100 text-center no-resize')
A> .prop('readOnly', true)
A> .prop('value', VarInput.split("¤")[0]);
A>
A>А первый отвечает: "Буду я ещё ГОВНОКОДИТЬ НА ЭТОМ ВАШЕМ jQuery!"
Ну ведь сам понимаешь, да?
IMHO намного чище без всяких непонятных `prop` и `$`
A>>А первый отвечает: "Буду я ещё ГОВНОКОДИТЬ НА ЭТОМ ВАШЕМ jQuery!"
bnk>Ну ведь сам понимаешь, да? bnk>IMHO намного чище без всяких непонятных `prop` и `$`
bnk>
Вот не соглашусь. На jQ это декларативная запись схемы преобразований DOM в чистом виде. Ни одного символа лишнего. Зачем, например, объявлять переменную, с именем, совпадающим с селектором, и делать таким образом копипаст, когда можно этого не делать (причём, без лишних запросов)? Это мелочи, конечно, но я и процитировал только кусочек. Когда этого полные штаны, где-нибудь да ошибёшься. И будет, например, после изменений проекта переменная dialog, содержащая не диалог, а панель, чтобы удивлять того, кому придётся поддерживать код.
Далее, два одинаковых prop'а наводят на мысль сделать мапу, описывающую новое состояние. Не будем забывать, что часть людей, придумавших соответствие атрибутов разметки и свойств OM, уже умерла от старости. Если бы это создавалось в наши дни, возможно, от этого сомнительного решения отказались бы в пользу DSL или того же самого .prop.
Далее, в случае с prop, конечно, много не наоптимизируешь, а вот с data — вполне себе. (data работает не с медленным DOM'ом, а с быстрыми js-объектами). А подход должен быть универсальным, иначе неконсистентно.
В целом, jQuery это аналог LINQ из дотнета. Только LINQ это декларативная запись схемы преобразований не DOM, а коллекций. И, соответственно, она нужна в core языка, а не внешнем браузерном API, как jQ. Другое отличие — LINQ пилит одна из лучших инженерных команд (хотя и их попрекают, хе-хе, всякими отсутствиями макросов), а браузерный API для ES пилит один из самых упоротых комитетов.
I'm a sewer mutant, and my favorite authors are Edgar Allan Poo, H.G. Smells and George R.R. Martin.
Здравствуйте, Alekzander, Вы писали:
A>И будет, например, после изменений проекта переменная dialog, содержащая не диалог, а панель, чтобы удивлять того, кому придётся поддерживать код.
Во втором случае у тебя будет syntax check на уровне среды.
А вот в prop('readOnly') или prop('value') — вообще строки, опечататься можно как дважды два.
Также, что там насчет автокомплита? Что я могу написать после .prop('
Переменные также легко переименовываются, в отличие от строк-аргументов.
В большинстве языков даже оператор специальный есть чтобы строки в явную писать — nameof
Ну в любом случае ни первое ни второе в массовом производстве вроде как давно не используется
A>В целом, jQuery это аналог LINQ из дотнета. Только LINQ это декларативная запись схемы преобразований не DOM, а коллекций. И, соответственно, она нужна в core языка, а не внешнем браузерном API, как jQ. Другое отличие — LINQ пилит одна из лучших инженерных команд (хотя и их попрекают, хе-хе, всякими отсутствиями макросов), а браузерный API для ES пилит один из самых упоротых комитетов.
IMHO у них общего только "номадная" запись (fluent interface, цепочка)
Здравствуйте, bnk, Вы писали:
bnk>Во втором случае у тебя будет syntax check на уровне среды. bnk>А вот в prop('readOnly') или prop('value') — вообще строки, опечататься можно как дважды два.
Это какой такой syntax check? Открой Гугл, нажми F12 и напиши:
И что там синтакс-чекнула среда?
bnk>Также, что там насчет автокомплита? Что я могу написать после .prop('
Во-первых. У динамических языков нет никакого автокомплита. Есть фантазии отдельных разрабов отдельных IDE о том, что стандартно, а что нет.
У меня, например, VS 2022 (это последняя версия студии) ругается на то, что "text" is not a valid value for the "background-clip" property. А уж что она думает про атрибуты SVG, заданные в стилях, я даже повторять не буду за дурой. А вот MDN, W3 и, главное, все браузеры думают, что всё нормально.
Так что, надо просто пользоваться IDE, которая в курсе существования jQuery, и будет счастье, и автокомплит, и проверка валидности пропертей (по представлениям разработчиков этой IDE).
Во-вторых. Если бы разработчики браузерного API и ES в целом были хорошими разработчиками, они бы добавили стрингайзеры, как, например, сделано в TIS. Но это же люди, которые придумали метод querySelectorAll. Что от них хорошего можно ждать в принципе.
bnk>Переменные также легко переименовываются, в отличие от строк-аргументов.
А кто будет проверять соответствие имени переменной селектору? Который, ВНЕЗАПНО, такая же строка. Вот и приплыли. Как ни крути, а введение переменной для результата селектора это нарушение DRY, денормализация, т.е. источник конфликтов.
bnk>Ну в любом случае ни первое ни второе в массовом производстве вроде как давно не используется
Лично мне всё равно, что там думает масса
jQuery это The Right Thing, потому что, по сути, декларативный DSL для манипуляций DOM'ом. В отличие от императивного ванилина с переменными, циклами и прочими окаменелостями.
A>>В целом, jQuery это аналог LINQ из дотнета. Только LINQ это декларативная запись схемы преобразований не DOM, а коллекций. И, соответственно, она нужна в core языка, а не внешнем браузерном API, как jQ. Другое отличие — LINQ пилит одна из лучших инженерных команд (хотя и их попрекают, хе-хе, всякими отсутствиями макросов), а браузерный API для ES пилит один из самых упоротых комитетов.
bnk>IMHO у них общего только "номадная" запись (fluent interface, цепочка)
Это симптом, надводная часть айсберга. Общее то, что это, повторюсь, DSL для декларативной записи преобразований. Поэтому и запись схожа.
Можно взять SQL. Там запись будет существенно отличаться, а идея будет та же самая.
I'm a sewer mutant, and my favorite authors are Edgar Allan Poo, H.G. Smells and George R.R. Martin.
Здравствуйте, Alekzander, Вы писали:
A>И что там синтакс-чекнула среда?
Ну я имел в виду, среда разработки (IDE)
bnk>>Также, что там насчет автокомплита? Что я могу написать после .prop('
A>Во-первых. У динамических языков нет никакого автокомплита. Есть фантазии отдельных разрабов отдельных IDE о том, что стандартно, а что нет. A>У меня, например, VS 2022 (это последняя версия студии) ругается на то, что "text" is not a valid value for the "background-clip" property. А уж что она думает про атрибуты SVG, заданные в стилях, я даже повторять не буду за дурой. А вот MDN, W3 и, главное, все браузеры думают, что всё нормально. A>Так что, надо просто пользоваться IDE, которая в курсе существования jQuery, и будет счастье, и автокомплит, и проверка валидности пропертей (по представлениям разработчиков этой IDE). A>Во-вторых. Если бы разработчики браузерного API и ES в целом были хорошими разработчиками, они бы добавили стрингайзеры, как, например, сделано в TIS. Но это же люди, которые придумали метод querySelectorAll. Что от них хорошего можно ждать в принципе.
Ну так typescript же сейчас везде? Зачем вообще на javascript писать. А там все нормально, статическая типизация.
bnk>>Переменные также легко переименовываются, в отличие от строк-аргументов.
A>А кто будет проверять соответствие имени переменной селектору? Который, ВНЕЗАПНО, такая же строка. Вот и приплыли. Как ни крути, а введение переменной для результата селектора это нарушение DRY, денормализация, т.е. источник конфликтов.
Введение константы ничего особо не портит IMHO. Там же стоит const не var.
bnk>>Ну в любом случае ни первое ни второе в массовом производстве вроде как давно не используется
A>Лично мне всё равно, что там думает масса A>jQuery это The Right Thing, потому что, по сути, декларативный DSL для манипуляций DOM'ом. В отличие от императивного ванилина с переменными, циклами и прочими окаменелостями.
Здесь не могу ничего сказать. Я обычно сталкивался с проектами где используется какой-то UI Framework, React там, Vue.
Рендеринг там, как правило, везде делается через Virutal DOM, и зачем бы мне там понадобился jQuery я слабо представляю.
Я в том смысле, что к "настоящим" элементам DOM все равно больше никто не обращается из своего кода.
Потому, что это очень непроизводительно, для более-менее больших проектов неприемлемо.
Здравствуйте, bnk, Вы писали:
A>>И что там синтакс-чекнула среда?
bnk>Ну я имел в виду, среда разработки (IDE)
Никто не может быть святее Папы Римского. И среда разработки не может синтакс-чекнуть глубже, чем среда исполнения. А среда исполнения говорит, что всё ОК. Это, короче, тот же аргумент, что и автокомплит. И точно так же он разбивается о динамическую природу языка.
bnk>>>Также, что там насчет автокомплита? Что я могу написать после .prop('
A>>Во-первых. У динамических языков нет никакого автокомплита. Есть фантазии отдельных разрабов отдельных IDE о том, что стандартно, а что нет. A>>У меня, например, VS 2022 (это последняя версия студии) ругается на то, что "text" is not a valid value for the "background-clip" property. А уж что она думает про атрибуты SVG, заданные в стилях, я даже повторять не буду за дурой. А вот MDN, W3 и, главное, все браузеры думают, что всё нормально. A>>Так что, надо просто пользоваться IDE, которая в курсе существования jQuery, и будет счастье, и автокомплит, и проверка валидности пропертей (по представлениям разработчиков этой IDE). A>>Во-вторых. Если бы разработчики браузерного API и ES в целом были хорошими разработчиками, они бы добавили стрингайзеры, как, например, сделано в TIS. Но это же люди, которые придумали метод querySelectorAll. Что от них хорошего можно ждать в принципе.
bnk>Ну так typescript же сейчас везде? Зачем вообще на javascript писать. А там все нормально, статическая типизация.
Вообще-то, ТС написал:
Планируется делать новый сайт с кучей JavaScript
Так что, typescript тут офтопик. Это во-первых. Во-вторых, кажется, Pzz хорошо сформулировал: слухи о смерти Си и Джаваскрипта сильно преувеличены.
Но можно и похоливарить! Добавлять в язык, в названии которого есть слово Script, типизацию — это очень, очень хреновая затея. На скриптовых языках надо пользоваться внешними типами, а не описывать свои. На то они и скриптовые. Вот эта песня: "Двести метров джаваскрипта грузят текста триста байт", она же не на пустом месте взялась. Это результат того, что скриптовую среду заставляют исполнять совершенно нетипичную (каламбур-с) для неё работу.
А самое главное, что Typescript это такая же нашлёпка сверху по отношению к среде выполнения, как и jQuery, только её поддерживает та же контора, что пишет VS Code, которым ты пользуешься, и поэтому кажется, что это всё "системно" и "стандартно".
bnk>>>Переменные также легко переименовываются, в отличие от строк-аргументов.
A>>А кто будет проверять соответствие имени переменной селектору? Который, ВНЕЗАПНО, такая же строка. Вот и приплыли. Как ни крути, а введение переменной для результата селектора это нарушение DRY, денормализация, т.е. источник конфликтов.
bnk>Введение константы ничего особо не портит IMHO. Там же стоит const не var.
Ещё раз. Возьмём твой код:
const dialog = document.querySelector('dialog');
Завтра другой программист изменит разметку (вместе с поведением приложения), и там будет какой-нибудь <div class="side-panel">, это будет боковая панель, а не диалог. Потом он быстренько подправит селектор, или даже за него это сделает вумный рефакторинг тул, и получится следующее:
А переменная останется под именем dialog. Это и есть тот самый потенциальный конфликт, к которым приводит нарушение DRY и денормализация в коде.
bnk>>>Ну в любом случае ни первое ни второе в массовом производстве вроде как давно не используется
A>>Лично мне всё равно, что там думает масса A>>jQuery это The Right Thing, потому что, по сути, декларативный DSL для манипуляций DOM'ом. В отличие от императивного ванилина с переменными, циклами и прочими окаменелостями.
bnk>Здесь не могу ничего сказать. Я обычно сталкивался с проектами где используется какой-то UI Framework, React там, Vue. bnk>Рендеринг там, как правило, везде делается через Virutal DOM, и зачем бы мне там понадобился jQuery я слабо представляю. bnk>Я в том смысле, что к "настоящим" элементам DOM все равно больше никто не обращается из своего кода. bnk>Потому, что это очень непроизводительно, для более-менее больших проектов неприемлемо.
Виртуальный DOM это виртуальный DOM, в том коде, который я скопировал под заголовком "Анекдот" им и не пахло. Как и Тайпскриптом, кстати.
Если ты виртуализируешь DOM, ты уже не будешь спрашивать, "Делаю сайтик, зашкварно ли использовать jQuery".
Что я думаю про саму идею виртуализации, это я оставлю при себе, тут всё-таки не КСВ.
I'm a sewer mutant, and my favorite authors are Edgar Allan Poo, H.G. Smells and George R.R. Martin.
Думаю тут будет более уместен вопрос почему есть куча JavaScript и не планируется использовать что-нибудь готовое из фреймворков или библиотек для написания веб сайтов.
Здравствуйте, koenig, Вы писали:
K>мы об одном и том же
Я дополнил твой вопрос. Если причину, почему не используется переменная, еще можно придумать, то получение элемента по селектору как в "анекдоте" объяснить сложно.
Что могло заставить написать так
Здравствуйте, rFLY, Вы писали:
K>>мы об одном и том же FLY>Я дополнил твой вопрос. Если причину, почему не используется переменная, еще можно придумать, то получение элемента по селектору как в "анекдоте" объяснить сложно. FLY>Что могло заставить написать так FLY>
FLY>document.querySelector("dialog div textarea");
FLY>
FLY>?
Ненавижу объяснять шутки, но, видимо, придётся.
Сочетание невысокой квалификации автора кода ("Что могло заставить написать так?") с предубеждением против использования jQuery, которая спроектирована и написана несопоставимо грамотнее, создаёт комический эффект ("Анекдот:").
Смешнее было только, когда Резига не взяли в какую-то говноконтору. (Плохо гномиков сортировал, кажется).
I'm a sewer mutant, and my favorite authors are Edgar Allan Poo, H.G. Smells and George R.R. Martin.
Здравствуйте, Alekzander, Вы писали:
A>Сочетание невысокой квалификации автора кода ("Что могло заставить написать так?") с предубеждением против использования jQuery, которая спроектирована и написана несопоставимо грамотнее, создаёт комический эффект ("Анекдот:").
Так с невысокой квалификацией и без предубеждения против использования jQuery гораздо смешнее выходит:
Здравствуйте, rFLY, Вы писали:
A>>Сочетание невысокой квалификации автора кода ("Что могло заставить написать так?") с предубеждением против использования jQuery, которая спроектирована и написана несопоставимо грамотнее, создаёт комический эффект ("Анекдот:"). FLY>Так с невысокой квалификацией и без предубеждения против использования jQuery гораздо смешнее выходит: FLY>
Здравствуйте, bnk, Вы писали:
bnk>Здравствуйте, The Minister, Вы писали:
TM>>Планируется делать новый сайт с кучей JavaScript. Возникает вопрос: использовать jQuery или чистый JS?
bnk>Почему-то регулярно этот вопрос задается, даже здесь. bnk>JQuery не нужен (все что в нем было хорошего, уже давно добавлнено в язык), чистый JS тоже (помтоу что это ужас). bnk>Используй TS (typescript). Тем более если кода много (тогда статическая типизация просто необходима) bnk>Современные инструменты его умеют из коробки, не сложнее чем javascirpt.
На ютубе даже можно посмотреть примеры разработки spa-приложений на чистом ts. Я тоже с этим экспериментировал — нормально получается.