artalog
Если в requestAnimationFrame вызвать еще раз requestAnimationFrame, переданный колбек будет выполнен не в текущем, а в следующем тике отрисовки. Вы должны знать что он выполняется в конце тика, после всех микротасок. У кого отдельная очередь? А если запланировать…
Ща про йэвент луп раскажу.
🔥10🤡3🌭2😭2
https://gist.github.com/diegohaz/bc07491aee61a5f2469574b38c5c1aa0
Ariakit - набор не стилизованных React компонентов и хуков для управления сложной UI логикой. Очень продуманные, но легкие. Список компонентов.
Я всегда во многом ровнялся на reakit. Интересно попробовать в продакшене Ariakit, пойду своим продавать =D
Ariakit - набор не стилизованных React компонентов и хуков для управления сложной UI логикой. Очень продуманные, но легкие. Список компонентов.
Я всегда во многом ровнялся на reakit. Интересно попробовать в продакшене Ariakit, пойду своим продавать =D
🔥12
Вчера смотрели исходники react-spectrum. Там решено очень много пограничных случаев для разных браузеров, но цена за это - сложность и перф. Например, компонент
Генераторы удобно использовать для применения в for-of, который выглядит более однозначно условного forEach и позволяет делать
Я попробовал написать бенч в котором сравнил реализацию обхода дерева через генератор travers и forEach с колбеком. Генератор в 20 раз медленее 🙃
FocusScope содержит 1к строк кода и вызывает 20 хуков. Но интерес привлек метод traverse реализованный через генератор, у класса Tree (ссылка).Генераторы удобно использовать для применения в for-of, который выглядит более однозначно условного forEach и позволяет делать
break (в приведенных исходниках этого нет). Но проблема с генераторами в том что они не очень хорошо оптимизируются движком.Я попробовал написать бенч в котором сравнил реализацию обхода дерева через генератор travers и forEach с колбеком. Генератор в 20 раз медленее 🙃
🔥10👌2
Среди всех проблем движения React на сервер меня больше всего беспокоит подготовленность фронтендеров к разработке бекенда. Со стороны маркетинга реакта этот вопрос вообще не освещается, там все просто, “а теперь мы ходим напрямую в базу”.
Конечно, бекенд - не рокет сайнс, там даже все стабильнее и менее разрозненно, чем на фронте. Но это большой пласт специфики по производительности (кешированию) и, особенно, безопасности. Кто научит новых фулстеков этому? Vercel об этом не очень беспокоится.
Реакт точно будет процветать, хотя бы из-за вечной востребованности фулстеков на рынке, как дешевом способе сделать полноценный продукт. Качество - оно для разных продуктов требуется разное. Наверное, огромный рынок фриланса и мелких студий подсядут на RSC. Это я так фантазирую, статистики у меня нет. Фейсбук, в очередной раз, сделал технологию для себя, но подойдет она большой части индустрии.
А что со SPA? Я считаю что это единственный способ делать сайты, не только приложения, нормально по UX. И я бы ставил на их больший рассвет, но вот индексация гугла со мной не согласится, а это сейчас самое главное на масс маркете. Хотя, в любом случае будет часть приложений, которым SSR вообще не сдался и какую технологию они будут выбирать.., даже не знаю. Preact имеет минимальный порог входа и отличные ТТХ, но у него, почему-то, очень мало амбассадоров. Я бы хотел попробовать его еще в реальной разработке, хотя самый первый пост в этом канале был про его недостатки, которые никуда не ушли.
Конечно, бекенд - не рокет сайнс, там даже все стабильнее и менее разрозненно, чем на фронте. Но это большой пласт специфики по производительности (кешированию) и, особенно, безопасности. Кто научит новых фулстеков этому? Vercel об этом не очень беспокоится.
Реакт точно будет процветать, хотя бы из-за вечной востребованности фулстеков на рынке, как дешевом способе сделать полноценный продукт. Качество - оно для разных продуктов требуется разное. Наверное, огромный рынок фриланса и мелких студий подсядут на RSC. Это я так фантазирую, статистики у меня нет. Фейсбук, в очередной раз, сделал технологию для себя, но подойдет она большой части индустрии.
А что со SPA? Я считаю что это единственный способ делать сайты, не только приложения, нормально по UX. И я бы ставил на их больший рассвет, но вот индексация гугла со мной не согласится, а это сейчас самое главное на масс маркете. Хотя, в любом случае будет часть приложений, которым SSR вообще не сдался и какую технологию они будут выбирать.., даже не знаю. Preact имеет минимальный порог входа и отличные ТТХ, но у него, почему-то, очень мало амбассадоров. Я бы хотел попробовать его еще в реальной разработке, хотя самый первый пост в этом канале был про его недостатки, которые никуда не ушли.
Telegram
melikhov.dev
В поезде прочитал интересные размышления от François Zaninotto — Is React Having An Angular.js Moment?
Франсуа задаётся вопросом, не подошёл ли Реакт к той же точке, в которую однажды упёрся Ангуляр, когда вторая версия оказалась полностью переписанной…
Франсуа задаётся вопросом, не подошёл ли Реакт к той же точке, в которую однажды упёрся Ангуляр, когда вторая версия оказалась полностью переписанной…
👍14🔥1🤔1
artalog
https://scrimba.com/scrim/c9g7ZKT3
Скримба очень интересная. Идея простая и гениальная - для обучающих скринкастов нужна не запись картинки с экрана, а запись действий на экране. Имея такую запись, можно легко прыгать в любой участок кода в любой момент времени, экспериментировать с ним и получать мгновенный фидбек.
Интересно еще и то что весь этот редактор сделан на собственном ЯП IMBA, который компилится в высокопроизводительный JS (HTML, CSS), этакая питонячая версия Elm.
Серьезный минус для меня только один - TS поддерживается очень плохо, только на части синтаксиса, импорты вообще не работают и горят красным.
Но на простом JS можно сделать очень удобный тутор.
Интересно еще и то что весь этот редактор сделан на собственном ЯП IMBA, который компилится в высокопроизводительный JS (HTML, CSS), этакая питонячая версия Elm.
Серьезный минус для меня только один - TS поддерживается очень плохо, только на части синтаксиса, импорты вообще не работают и горят красным.
Но на простом JS можно сделать очень удобный тутор.
imba.io
Imba - The friendly full-stack language
Imba is a programming language for building web applications with insane performance. You can use it both for the server and client.
🤔6😁1
В чате обсуждаем новость про MDN Playground, зачем делать свое решение, а не взять готовое? А что есть из готового, codesandbox и stackblitz очень тяжелые (если хочешь вставить сразу несколько).
Предложили https://docs.jsfiddle.net/embedding-fiddles, открыл пример - скачал 2МБ, из которых большая половина на JS, причем в анзипе там 6+ метров, это сколько парсить и инициализировать!
Посмотрел повнимательнее, большую часть занимает
Надо еще покопать, если звезды сойдуться, засуну jsfiddle на сайт реатома 🤔
Предложили https://docs.jsfiddle.net/embedding-fiddles, открыл пример - скачал 2МБ, из которых большая половина на JS, причем в анзипе там 6+ метров, это сколько парсить и инициализировать!
Посмотрел повнимательнее, большую часть занимает
jsfiddle.net/js/_dist-linters.js, без него результат очень даже ничего и работоспособность не ломается! Проблема теперь в том, что в доке я не нашел как это отключить.Надо еще покопать, если звезды сойдуться, засуну jsfiddle на сайт реатома 🤔
👍1
Forwarded from CherryTea 🇺🇦
У меня в шрифте как слева, а надо как справа.
Решение в лоб
К счастью в css есть такая классная фича - unicode-range, помощью нее можно заставить браузер брать этот символ из другого шрифта.
Находим на google fonts шрифт в котором наш сивол выглядит как надо, скачиваем ег ои вырезаем оттуда все кроме этого символа с помощью сервиса https://transfonter.org/, закидываем в проект и пишем следующий стиль
P.S. Шрифт со спец символом не грузится пока на странице не появится этот символ
Решение в лоб
dangerousInnerHTML={text.replace('®', '<sub>®</sub>')} не элегантно, потому что я не знаю где мне этот символ может прилелеть.К счастью в css есть такая классная фича - unicode-range, помощью нее можно заставить браузер брать этот символ из другого шрифта.
Находим на google fonts шрифт в котором наш сивол выглядит как надо, скачиваем ег ои вырезаем оттуда все кроме этого символа с помощью сервиса https://transfonter.org/, закидываем в проект и пишем следующий стиль
@font-face {
font-family: 'Copyright';
src: url('/fonts/copyright.woff2') format('woff2'),
url('/fonts/copyright.woff') format('woff');
unicode-range: U+00AE;
}
body {
font-family: 'Copyright', 'Ваш обычный шрифт', sans-serif;
}
Готово. P.S. Шрифт со спец символом не грузится пока на странице не появится этот символ
👍32👏3👎1👀1
Promise.withResolvers на stage 2 и это хорошо! А как вы сейчас это делаете?
Простое решение в одну строку:
new Promise((...a) => ([res, rej] = a))
Максимальная минификация:
const toPromise = (cb, resolvers) => ({
promise: new Promise((...a) => (resolvers = a)),
cb: (...a) => cb(...a).then(...resolvers),
});
Простое решение в одну строку:
Максимальная минификация:
promise: new Promise((...a) => (resolvers = a)),
cb: (...a) => cb(...a).then(...resolvers),
});
🥴9🤮2👍1
Сделать типобезопасные и не бойлерплейтные формы достаточно просто, нужно сначала создавать формы / филды с нужными типами, а потом их использовать.
Ручное прокидывание дженериков, как это принято во всех мейнстримных библиотеках - глупость. Это не надежно, это бойлерплейтно, это не работает нормально без опциональных дженериков (когда их несколько) и еще пачка мелочей…
Мы сейчас переезжаем с final-form на… Наверное, Formik. Ну я его посмотрел и сходу предложил команде написать сверху свои типы, потому что сейчас там все умеренно плохо (некотрые апи вообще не принимают дженерик и возвращают any). На скрине то как я считаю нужно писать подобные вещи - один раз при создании формы указал дженерик, дальше все апи через этот инстанс формы используем и типы выводяться.
Сильно плакаю от того что нет времени доделать reatom/form-web, я рассказывал - посмотрите, минимальная апишка, функциональная архитектура, макс перф, все типобезопасно…
Ручное прокидывание дженериков, как это принято во всех мейнстримных библиотеках - глупость. Это не надежно, это бойлерплейтно, это не работает нормально без опциональных дженериков (когда их несколько) и еще пачка мелочей…
Мы сейчас переезжаем с final-form на… Наверное, Formik. Ну я его посмотрел и сходу предложил команде написать сверху свои типы, потому что сейчас там все умеренно плохо (некотрые апи вообще не принимают дженерик и возвращают any). На скрине то как я считаю нужно писать подобные вещи - один раз при создании формы указал дженерик, дальше все апи через этот инстанс формы используем и типы выводяться.
Сильно плакаю от того что нет времени доделать reatom/form-web, я рассказывал - посмотрите, минимальная апишка, функциональная архитектура, макс перф, все типобезопасно…
❤4🤡1