artalog
4.24K subscribers
542 photos
40 videos
40 files
913 links
Развернутые ответы на вопросы в чатах, мысли от рабочих процессов.
Вопросы - @artalar.
Download Telegram
Live stream started
Немного поделаем самую быструю (?) либу для работы с JSX
🔥81
Live stream finished (1 hour)
artalog
Video
За час сделали поддержку условного рендеринга для act!

Посмотреть можно тут. Принцип act-jsx: рендер один раз (мемоизировать ничего не надо), в значения прокидываем акты (обсерваблы) и происходит очень точечная автоподписка на все свойства. Все очень ленивое и быстрое, но стейт нужно хранить вне компонентов. К счастью с act с этим проблем нет, смотрите пример, в общем 🙂

P.S. этот же пример на реакте занимает в 2 раза больше кода и в десятки раз больше памяти и бандлсайза. act + act-jsx всего 700 байт.
🔥17👍2
Live stream scheduled for
Live stream started
Live stream finished (35 minutes)
Новостей много, но не успеваю их расписать на посты :)

Вот вам первая демка @reatom/form-web: https://codesandbox.io/s/reatom-form-web-tefn82?file=/src/App.tsx

Этой ночью запаблишил альфа версию, там ещё могут быть баги. Фичи кмк наивкуснейшие:

- апи специально задизайнено для наилучшего решения всех простых и сложных случаев: максимальный вывод типов и возможность легко работать с динамически добавляемыми полями
- фреймворк агностик, более того, используются стандартные биндинги из пакета npm-react, те не нужен еще пакет биндингов для формы, как у tanstack распространено
- построен поверх @reatom/form - абстрактной либы для фабрикации филдов, включающей в себя менеджемент фокуса и валидации. Достаточно просто можно писать свои филды (актуально для react-native, сложных автокомплитов, дарг&дропов и вообще чего угодно)
- естественно, работает на @reatom/core, что дает кучу слажанных фич: зависимые поля, динамические филды, лайфсайкл хуки и куча оптимизаций производительности
- весит всего 3кб
- по скорости инициализации как react-hook-form (мб еще ускорю), ререндеров вообще нет даже при срабатывании логики зависимых полей

Это лишь сухой список фич. Попозже понаделаю примеров и покажу как рвать в хлам другие библиотеки.
🔥19
Давайте минут через 10 войсом расскажу о дерти-чекинге внутри реатома
🔥2🆒1
Live stream started
Live stream finished (23 minutes)
Вот вам маленькая задачка.
У вас нет ссылки на эту только что созданную и немедленно вызванную функцию, она и ее содержимое вам никак не доступны. Убьет ли ее сборщик мусора? если да, то когда? Если нет, то почему?

Ответ: вопрос вас намеренно запутывает. Принцип работ GC прост - чиститься все на что нет ссылки во внешнем мире. Внешний мир - не только вьюшка и ваш код, это любое IO. В данном случае ссылка на функцию всегда доступна через замыкание создаваемого для авейта колбека, который хранится в очереди таймаутов.
👍12🤯42
Что быстрее: JSDOM в Jest или puppeteer? 🙃

Мне тут в чате напомнили, что я год назад это тестировал и пупетир оказался быстрее! Конечно, там достаточно странные тесты и подозрительно медленные результаты на джесте, скорее всего можно что-то как-то оптимизировать, но… Зачем, если можно писать в нативной среде без проблем с перфом?

Если у вас есть тоже какие-то заметки на этот счет - поделитесь, пожалуйста. В моей голове откуда-то информация о том что JSDOM медленнее обычного дома раз в 30, в среднем. Ну и, конечно, имеет пачку багов и не поддерживает кучу фич. Хедлес браузер же только стартует долго, а сами тесты должен гнать очень быстро.

P.S. https://docs.cypress.io/guides/component-testing/overview
Live stream started
Live stream finished (1 hour)