Re[7]: Анекдот
От: Alekzander  
Дата: 05.12.24 19:13
Оценка:
Здравствуйте, 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.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.