Среди всех проблем движения 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
Поделитесь вашими болями при работе с формами, менеджерами форм. Через час разберу их на стриме.
Только вчера думал, и сегодня в рабочем чате подтверждение прилетело…
Реакт сломан бай дизайн и нам нужно бежать от него. Без шуток, я уже максимально серьезно об этом задумываюсь. А проблема в чем? Нет гарантий.
Ни на что нет гарантий, ваши мемоизации и эффекты, в которых хранится логика, которую иначе в реакте и не написать, “когда-то” “может быть” будут сбрасываться и перевызываться. Это уже происходит при переизбытке deps в соотстветствующих хуках. Лишние ререндеры банально мешают дебажить. Количество сложности, особенно для начинающего разработчика, катастрафическое в прямом смысле слова. На дебаг большого реакт приложения за рациональное время способны только дорогие опытные разработчики.
Я просто не знаю как проектировать фичи и апи библиотечного кода с учетом того что useMemo и useEffect будут перевызываться не только лишь когда надо. Сейчас я думаю, “а ладно, потом перепишем”. Все так думают, или не задумываются о проблеме вовсе. Но я понял, что это безответственно.
Наложите на это еще 100500 других проблем и я даже не знаю что делать… Вся экосистема, которая мне реально нужна, либо опционально отвязана от реакта, либо достаточно свежая, и зачем ее нужно было пилить под реакт…
Самое противное, что не понятно куда валить. Vue приятнее, но там кучка свои проблем. Ангулар тоже много чем пугает, особенно Rx’ом. Есть вообще вьюшные фреймворки, который расчитаны на дебаг, когда все станет большим?
Реакт сломан бай дизайн и нам нужно бежать от него. Без шуток, я уже максимально серьезно об этом задумываюсь. А проблема в чем? Нет гарантий.
Ни на что нет гарантий, ваши мемоизации и эффекты, в которых хранится логика, которую иначе в реакте и не написать, “когда-то” “может быть” будут сбрасываться и перевызываться. Это уже происходит при переизбытке deps в соотстветствующих хуках. Лишние ререндеры банально мешают дебажить. Количество сложности, особенно для начинающего разработчика, катастрафическое в прямом смысле слова. На дебаг большого реакт приложения за рациональное время способны только дорогие опытные разработчики.
Я просто не знаю как проектировать фичи и апи библиотечного кода с учетом того что useMemo и useEffect будут перевызываться не только лишь когда надо. Сейчас я думаю, “а ладно, потом перепишем”. Все так думают, или не задумываются о проблеме вовсе. Но я понял, что это безответственно.
Наложите на это еще 100500 других проблем и я даже не знаю что делать… Вся экосистема, которая мне реально нужна, либо опционально отвязана от реакта, либо достаточно свежая, и зачем ее нужно было пилить под реакт…
Самое противное, что не понятно куда валить. Vue приятнее, но там кучка свои проблем. Ангулар тоже много чем пугает, особенно Rx’ом. Есть вообще вьюшные фреймворки, который расчитаны на дебаг, когда все станет большим?
👍21🥱9🔥5👎3❤2👏1🤔1
artalog
Только вчера думал, и сегодня в рабочем чате подтверждение прилетело… Реакт сломан бай дизайн и нам нужно бежать от него. Без шуток, я уже максимально серьезно об этом задумываюсь. А проблема в чем? Нет гарантий. Ни на что нет гарантий, ваши мемоизации и…
Дейли ремайндер про квирки React.js:
- патчится globalThis.fetch
- сайд-эффекты вызываются дважды (пока в деве, потом может быть и в проде)
- console манкипатчится что бы скрыть логи второго рендера от StrictMode. Раньше это было дико не очевидно, почему часть логов пропадает, сейчас второй лог красится в полупрозрачный. Но дебаг все равно очень страдает - стактрейсы содержат декоратор лога и из консоли просто не перейти в место лога. Бесит.
- синтетические события не только унифицируют, но и отличаются от нативных. В целом, они делают поведение кода более предсказуемым в рядовой разработке, но в том числе из-за них бандлсайз react + react-dom выливается в 140кб! Кстати, “Hello World!” на next.js выплевывает бандл на треть мегабайта.
- HMR сбрасывает состояние хуков, но не useState, хуже того - колбек инициализации тоже не перевызывается, даже если изменения были именно в нем.
- Нет хука для инициализации данных с сайд-эффектом. Если вам нужно проставить currentDate или создать инстанс либы, который запускает фетчинг, нет удобного способа это сделать (см пункт выше).
- React.js написан на полумертвом Flow! Если захотите поконтрибьютить, так просто IDE вам типы подсказывать не будет.
Если знаете подобный более полный список, поделитесь статейкой, пожалуйста.
- патчится globalThis.fetch
- сайд-эффекты вызываются дважды (пока в деве, потом может быть и в проде)
- console манкипатчится что бы скрыть логи второго рендера от StrictMode. Раньше это было дико не очевидно, почему часть логов пропадает, сейчас второй лог красится в полупрозрачный. Но дебаг все равно очень страдает - стактрейсы содержат декоратор лога и из консоли просто не перейти в место лога. Бесит.
- синтетические события не только унифицируют, но и отличаются от нативных. В целом, они делают поведение кода более предсказуемым в рядовой разработке, но в том числе из-за них бандлсайз react + react-dom выливается в 140кб! Кстати, “Hello World!” на next.js выплевывает бандл на треть мегабайта.
- HMR сбрасывает состояние хуков, но не useState, хуже того - колбек инициализации тоже не перевызывается, даже если изменения были именно в нем.
- Нет хука для инициализации данных с сайд-эффектом. Если вам нужно проставить currentDate или создать инстанс либы, который запускает фетчинг, нет удобного способа это сделать (см пункт выше).
- React.js написан на полумертвом Flow! Если захотите поконтрибьютить, так просто IDE вам типы подсказывать не будет.
Если знаете подобный более полный список, поделитесь статейкой, пожалуйста.
👍10🤔4🌚2👎1😢1
Интересно, что нет SPA фреймворков 🤔
Все бегают вокруг SSR / фулстека. Nuxt, Sveltekit, SolidStart - даже некуда уйти с реакта.
Под SPA фреймворком я подразумеваю offline-first, хелперы для уведомлений и еще пачки нативных апи, возможность писать web worker просто как и любой другой модуль в приложении (ТС, импорты локальных модулей), оптимистичные апдейты, хорошая работа с клиентским кешом. И еще куча всего. Это не просто!
Я уверен, вы порекомендуете мне несколько решений, но они же не очень популярны?
Все бегают вокруг SSR / фулстека. Nuxt, Sveltekit, SolidStart - даже некуда уйти с реакта.
Под SPA фреймворком я подразумеваю offline-first, хелперы для уведомлений и еще пачки нативных апи, возможность писать web worker просто как и любой другой модуль в приложении (ТС, импорты локальных модулей), оптимистичные апдейты, хорошая работа с клиентским кешом. И еще куча всего. Это не просто!
Я уверен, вы порекомендуете мне несколько решений, но они же не очень популярны?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18👎2🤔2