Здравствуйте, bnk, Вы писали:
bnk>Во втором случае у тебя будет syntax check на уровне среды.
bnk>А вот в prop('readOnly') или prop('value') — вообще строки, опечататься можно как дважды два.
Это какой такой syntax check? Открой Гугл, нажми F12 и напиши:
const inp = document.querySelector('textarea[title="Search"]'); inp.value = 42;
Посмотри на обновление строки (для верности), потом нажми F5 и напиши:
const inp = document.querySelector('textarea[title="Search"]'); inp.volue = 42;
И что там синтакс-чекнула среда?
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.