Здравствуйте, 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, типизацию — это очень, очень хреновая затея. На скриптовых языках надо пользоваться внешними типами, а не описывать свои. На то они и скриптовые. Вот эта песня: "Двести метров джаваскрипта грузят текста триста байт", она же не на пустом месте взялась. Это результат того, что скриптовую среду заставляют исполнять совершенно нетипичную (каламбур-с) для неё работу.
Не надо, короче, тащить в браузер бизнес-логику. Но мы, к сожалению, живём в мире, где
для определения чётности есть NPM Package с 2 миллионами загрузок в месяц.
А самое главное, что Typescript это такая же нашлёпка сверху по отношению к среде выполнения, как и jQuery, только её поддерживает та же контора, что пишет VS Code, которым ты пользуешься, и поэтому кажется, что это всё "системно" и "стандартно".
bnk>>>Переменные также легко переименовываются, в отличие от строк-аргументов.
A>>А кто будет проверять соответствие имени переменной селектору? Который, ВНЕЗАПНО, такая же строка. Вот и приплыли. Как ни крути, а введение переменной для результата селектора это нарушение DRY, денормализация, т.е. источник конфликтов.
bnk>Введение константы ничего особо не портит IMHO. Там же стоит const не var.
Ещё раз. Возьмём твой код:
const dialog = document.querySelector('dialog');
Завтра другой программист изменит разметку (вместе с поведением приложения), и там будет какой-нибудь <div class="side-panel">, это будет боковая панель, а не диалог. Потом он быстренько подправит селектор, или даже за него это сделает вумный рефакторинг тул, и получится следующее:
const dialog = document.querySelector('div.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.