Он там частичный абсолютно всегда. Любое изменение дёргает только конткретные атрибуты/поля/ивенты. Изначальный код HTML заворачивается в template, далее в местах разрыва tag literal регистрируются "дырки" (holes или values), которые при повторном рендере обновляются по изменению value по конкретному индексу. В общем, все преимущества Virtual DOM без его недостатков. Свои caveats там, конечно, тоже есть (например, нельзя вдруг поменять имя тэга, это требует пересчёта всего элемента и теряет все преимущества), но по сравнению с virtual dom они гораздо менее существенны. И работает безо всякой транспиляции, прямо в браузере.
Критическая проблема данного подхода — это неподсвечиваемые, невалидируемые (через линт) и неформатируемые выражения внутри строк. Собственно, для решения этой проблемы и появился JSX. Он позволяет использовать все возможности JS без ограничений, и при этом всё ещё иметь выразительный язык шаблонов. Ангуляр, кстати, тоже от этой проблемы страдает, но это уже просто наследие ранних подходов.
Но если так хочется совместить строки и pure JS, почему не воспользоваться Lit? (точнее, lit-html, веб компоненты тянуть не обязательно). Lit как раз отлично решает проблему: это прямые строки, никакой компиляции, и в то же время можно свободно пользоваться возможностями языка
автор коммента про то, что это чуть ли не новый стандарт и нужно использовать только их сразу куда то слился с обсуждения. Как это всегда бывает. И как будет с вами.
Пхпх, а чего мне на вас время тратить-то 🤭 Что вообще можно сказать лягушке, которая не интересуется ничем, кроме своего колодца?
Иммутабельные паттерны разработки UI-приложений в последние годы стали одними из самых популярных
Я даже пошёл календарь перепроверить, не оказался ли я случайно в 2018. Иммутабельные паттерны разработки при том, что у нас уже много лет есть сигналы? `Immutable.js` в 2026? И я, конечно, догадывался, что Redux всё ещё где-то рядом с нами, но назвать его популярным?
В общем, статья вызывает большие вопросы о релевантности (и ностальгию!)
Разработчики сафари наотрез отказались поддерживать эту спеку. Так что её можно не ждать. Плюс многие инструменты для веб-компонентов нарочито игнорируют её. У меня есть смутное подозрение, что рано или поздно её выпилят за ненадобностью.
Вообще вначале я был очень "за" эту спеку, но после нескольких попыток её использовать я понял, что по сути она мне не нужна. Для веб компонентов я чаще всего использую ShadowDOM, а custom built-in elements мне такой возможности не дают. В результате я так ни разу ею и не воспользовался, хотя у ungap project есть хороший полифилл для этого (а ещё я сам такой полифилл писал).
Из статьи совершенно непонятно, почему нельзя сигналы использовать для асинхронных событий. Те же самые пуш-уведомление, debounce или запрос на сервер прекрасно решаются через сочетание нативного Promise и signal.set. Так в чём смысл тянуть дополнительную немаленькую библиотеку? Только чтобы добавить немного синтаксического сахара? Да ещё и с ограничениями попытки совместить их вместе.
Статья будто из 2017. А в итоге Web 3 так и не родился, криптовалюты оказались чем-то очень нишевым, NFT остались просто скамом, а блокчейн толком никуда и не впилили.
Ммм, вы говорите про shallow check, что ли? Если сильно (очень сильно!) упрощать, то он выглядит как-то так:
Что тут может нагружать CPU, да ещё и неимоверно?
Он там частичный абсолютно всегда. Любое изменение дёргает только конткретные атрибуты/поля/ивенты. Изначальный код HTML заворачивается в template, далее в местах разрыва tag literal регистрируются "дырки" (holes или values), которые при повторном рендере обновляются по изменению value по конкретному индексу. В общем, все преимущества Virtual DOM без его недостатков. Свои caveats там, конечно, тоже есть (например, нельзя вдруг поменять имя тэга, это требует пересчёта всего элемента и теряет все преимущества), но по сравнению с virtual dom они гораздо менее существенны. И работает безо всякой транспиляции, прямо в браузере.
А если я пользкюсь Intellij IDEA? )
Критическая проблема данного подхода — это неподсвечиваемые, невалидируемые (через линт) и неформатируемые выражения внутри строк. Собственно, для решения этой проблемы и появился JSX. Он позволяет использовать все возможности JS без ограничений, и при этом всё ещё иметь выразительный язык шаблонов. Ангуляр, кстати, тоже от этой проблемы страдает, но это уже просто наследие ранних подходов.
Но если так хочется совместить строки и pure JS, почему не воспользоваться Lit? (точнее, lit-html, веб компоненты тянуть не обязательно). Lit как раз отлично решает проблему: это прямые строки, никакой компиляции, и в то же время можно свободно пользоваться возможностями языка
Ааа, вон оно как! Спасибо за объяснение, паззл сложился 😊
В августе? 2023? 🧐
Пхпх, а чего мне на вас время тратить-то 🤭 Что вообще можно сказать лягушке, которая не интересуется ничем, кроме своего колодца?
Вы там под корягой прогаете, если про сигналы не слышали, или да?
А вообще смешно, конечно, смотреть на ваши потуги доказать, что вы правы.
Но меж тем реальность, увы, не на вашей стороне.
Preact изобрёл сигналы (ну, не то чтобы это новая технология, но именно их реализация запустила хайп)
React принял сигналы по умолчанию (в смысле, они ничего не делали, Preact изначательно реализовывал сигналы и для реакта тоже).
Ангуляр внедрил у себя сигналы, который заменяют (барабанная дробь) rxjs.
У Vue они теперь тоже есть, как Alien Signals.
Solid с сигналами работает ещё до Preact.
Svelte втащили себе сигналы.
И даже в TC39 появился пропозал на включение нативных сигналов в платформу.
Если это не популярность, то вы попросту отрицаете реальность, пытаясь основываться на ничего не значащих циферках.
Вот как? Тогда самый популярный стейт-менеджер это rxjs. Ни редакс, ни ваш зустанд рядом даже чихнуть не смеют. Всё верно?
И что вы этим докажете? Что много легаси на редаксе работает? Ну так на jQuery 90% веба до сих пор крутится.
А вот предложение на включение в JS редакс точно не получал.
Я даже пошёл календарь перепроверить, не оказался ли я случайно в 2018. Иммутабельные паттерны разработки при том, что у нас уже много лет есть сигналы? `Immutable.js` в 2026? И я, конечно, догадывался, что Redux всё ещё где-то рядом с нами, но назвать его популярным?
В общем, статья вызывает большие вопросы о релевантности (и ностальгию!)
AbortController: ну да, ну да, пошёл я нафигНу, maintenance mode же. Конечно что-то фиксят. Но вот Material Expressive уже не дождёмся, как и бо́льшей части компонентов оригинальной спеки
Уже не пилит, увы
Разработчики сафари наотрез отказались поддерживать эту спеку. Так что её можно не ждать. Плюс многие инструменты для веб-компонентов нарочито игнорируют её. У меня есть смутное подозрение, что рано или поздно её выпилят за ненадобностью.
Вообще вначале я был очень "за" эту спеку, но после нескольких попыток её использовать я понял, что по сути она мне не нужна. Для веб компонентов я чаще всего использую ShadowDOM, а custom built-in elements мне такой возможности не дают. В результате я так ни разу ею и не воспользовался, хотя у ungap project есть хороший полифилл для этого (а ещё я сам такой полифилл писал).
Привет, ChatGPT, мой старый друг 🤭
Да мы к ним регулярно возвращаемся. Вон, тот же Tailwind с utility classes... Не очень мы любим на чужих ошибках учиться
`simple-git-hooks`? Гораздо легковеснее, а работу выполняет не хуже
И у меня как раз есть библиотека для такого роутинга! Маленькая (781 байт gzipped), но достаточно мощная для того, чтобы закрыть все потребности!
Если вдруг найдёте какую-то ошибку, обязательно создайте issue!
Из статьи совершенно непонятно, почему нельзя сигналы использовать для асинхронных событий. Те же самые пуш-уведомление, debounce или запрос на сервер прекрасно решаются через сочетание нативного Promise и signal.set. Так в чём смысл тянуть дополнительную немаленькую библиотеку? Только чтобы добавить немного синтаксического сахара? Да ещё и с ограничениями попытки совместить их вместе.
Статья будто из 2017. А в итоге Web 3 так и не родился, криптовалюты оказались чем-то очень нишевым, NFT остались просто скамом, а блокчейн толком никуда и не впилили.