Pull to refresh
16

Senior Frontend Developer

0,1
Rating
9
Subscribers
Send message

Ммм, вы говорите про shallow check, что ли? Если сильно (очень сильно!) упрощать, то он выглядит как-то так:

const registry = new WeakMap<TemplateStringsArray, TemplateResult>();

function html(strings: TemplateStringsArray, values: readonly unknown[]): TemplateResult {
    if (registry.has(strings)) {
        const result = registry.get(strings)!;

        for (let i = 0; i < strings.length; i++) {
            if (result.get(i).value !== values[i]) {
                result.update(values[i]);
            }
        }
    } else {
        // Init code
    }
}

function exec(txt: string) {
  render(html`<div>${txt}</div>`, document.getElementById('root'));
}

Что тут может нагружать CPU, да ещё и неимоверно?

Он там частичный абсолютно всегда. Любое изменение дёргает только конткретные атрибуты/поля/ивенты. Изначальный код HTML заворачивается в template, далее в местах разрыва tag literal регистрируются "дырки" (holes или values), которые при повторном рендере обновляются по изменению value по конкретному индексу. В общем, все преимущества Virtual DOM без его недостатков. Свои caveats там, конечно, тоже есть (например, нельзя вдруг поменять имя тэга, это требует пересчёта всего элемента и теряет все преимущества), но по сравнению с virtual dom они гораздо менее существенны. И работает безо всякой транспиляции, прямо в браузере.

Я написал extension для visual studio code

А если я пользкюсь 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 редакс точно не получал.

Иммутабельные паттерны разработки UI-приложений в последние годы стали одними из самых популярных

Я даже пошёл календарь перепроверить, не оказался ли я случайно в 2018. Иммутабельные паттерны разработки при том, что у нас уже много лет есть сигналы? `Immutable.js` в 2026? И я, конечно, догадывался, что Redux всё ещё где-то рядом с нами, но назвать его популярным?

В общем, статья вызывает большие вопросы о релевантности (и ностальгию!)

Анонимную функцию, созданную прямо в addEventListener, удалить невозможно.

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 остались просто скамом, а блокчейн толком никуда и не впилили.

1
23 ...

Information

Rating
4,937-th
Location
Россия
Date of birth
Registered
Activity