Привет, работяги!
Начал собирать список материалов. Он динамический. Пока собрал все, что вспомнил и могу вам посоветовать. В будущем буду добавлять туда новые книги с небольшим мои отзывом.
Есть мысли собрать ламповый список с художественной литературой. Если интересно, то пишите в комменты)
Приятного чтения!
Начал собирать список материалов. Он динамический. Пока собрал все, что вспомнил и могу вам посоветовать. В будущем буду добавлять туда новые книги с небольшим мои отзывом.
Есть мысли собрать ламповый список с художественной литературой. Если интересно, то пишите в комменты)
Приятного чтения!
devarchie on Notion
Материалы | Notion
Hosted by Notion Sites — The easiest way to get a website up and running.
🔥86❤🔥11❤8🫡6🥰2🐳2👨💻2⚡1🎄1🆒1
Здарова, работяги!
В открытый досутп опубликовали доклад с весенней HolyJs - YouTube.
А уже 24, 25, 26 июня в рамках ШРИ будет блок лекций по React.
В этом году план следующий:
1. 24 поговорим о базе Реакта. Я каждый год делаю эту лекцию с нуля, добавляю новые нюансы, улучшаю объяснения и т. д. Этот год не исключение.
2. 25 большая лекция про NextJS. Посмотрим, как построить приложения, используя этот фреймворк.
3. 26 Андрей Зубков, мой коллега, расскажет о построении классического SPA.
Все лекции, как и каждый год, будут в открытом доступе.
В открытый досутп опубликовали доклад с весенней HolyJs - YouTube.
А уже 24, 25, 26 июня в рамках ШРИ будет блок лекций по React.
В этом году план следующий:
1. 24 поговорим о базе Реакта. Я каждый год делаю эту лекцию с нуля, добавляю новые нюансы, улучшаю объяснения и т. д. Этот год не исключение.
2. 25 большая лекция про NextJS. Посмотрим, как построить приложения, используя этот фреймворк.
3. 26 Андрей Зубков, мой коллега, расскажет о построении классического SPA.
Все лекции, как и каждый год, будут в открытом доступе.
YouTube
Тёма Сенюков — Next.js. Как ты вообще рендеришь?
Подробнее о конференции HolyJS: https://jrg.su/EM4wwV
— —
Долгое время мы жили с пониманием, что есть SSR, SSG, CSR. Мы научились их готовить, использовать преимущества и минимизировать недостатки. Появление серверных компонентов в React и внедрение их…
— —
Долгое время мы жили с пониманием, что есть SSR, SSG, CSR. Мы научились их готовить, использовать преимущества и минимизировать недостатки. Появление серверных компонентов в React и внедрение их…
🔥76❤🔥5❤4🏆3⚡2👍1👨💻1
И еще новость!
27 июня буду на Youngcon. Если тоже планируете посетить — пишите, буду рад пообщаться вживую)
(не реклама)
27 июня буду на Youngcon. Если тоже планируете посетить — пишите, буду рад пообщаться вживую)
(не реклама)
Young Con — фест Яндекса про карьеру в IT
Смотрим, как это было: спикеры Яндекса о технологиях и карьере. Сторис и полная запись трансляции
🔥16🆒2
Материалы со ШРИ 2024
Здарова, работяги!
Что-то затянул я с материалами со ШРИ — исправляюсь.
Лекция 1 - базовый реакт
- Видео
- Преза
- Код
Лекция 2 - next.js
- Видео
- Преза
- Код
Приятного просмотра)
Здарова, работяги!
Что-то затянул я с материалами со ШРИ — исправляюсь.
Лекция 1 - базовый реакт
- Видео
- Преза
- Код
Лекция 2 - next.js
- Видео
- Преза
- Код
Приятного просмотра)
YouTube
Реакт. Построение приложения (Часть 1) — ШРИ 2024
В предыдущих сезонах «ШРИ» мы уже подробно рассматривали сам React. Теперь пришло время детально поговорить о создании приложения с использованием этой библиотеки. В серии лекций мы подробно изучим экосистему React, рассмотрим различные архитектурные подходы…
🔥81❤17👍11🙏3
Вакансия
Здарова, работяги!
Ко мне в команду открылась вакансия.
Ищем мощного разработчика (JS/TS), который будет вместе с нами развивать плеер Кинопоиска. Более подробное описание о том, что предстоит делать, и требования в самой вакансии. Если будут вопросы, пишите).
Здарова, работяги!
Ко мне в команду открылась вакансия.
Ищем мощного разработчика (JS/TS), который будет вместе с нами развивать плеер Кинопоиска. Более подробное описание о том, что предстоит делать, и требования в самой вакансии. Если будут вопросы, пишите).
🔥41🐳3💩1
Челендж
Здарова, работяги!
Уже несколько недель, как я активно погрузился в найм новых членов команды. Раньше я всегда выступал в роли собеседующего на секциях с кодом. В этот раз роль во всем этом мероприятии новая. Раньше мне просто назначали секцию, я ее проводил, заполнял «отчет» и шел пить кофеек со спокойной совестью. Сейчас иначе, вместо секций с кодом провожу финальные секции. Но, как по мне, это не главное отличие. Самое основное изменение в том, что необходимо просматривать большое кол-во кандидатов, которые уже прошли секции с кодом, анализировать их решения и т. д. Задач много, решения разные... И вот тут я почувствовал, что во всей этой лидовской кутерьме совсем позабыл про свою рутину с задачками.
Раньше я стабильно порешивал литкод, кодварс и прочее. Решил, что пора вернуться к этому занятию. Очень символично, что сегодня начало сентября и учебного года. Пока в планах решать по задачке в день, предлагаю вам ко мне присоедениться.
В конце сентября выложу, что из этого вышло. Будет круто, если в комментах вы тоже поделитесь тем, что получится за этот месяц у вас)
P.S. Буду рад, если в комменты к этому посту скинете ваши любимые подборки задачек)
Здарова, работяги!
Уже несколько недель, как я активно погрузился в найм новых членов команды. Раньше я всегда выступал в роли собеседующего на секциях с кодом. В этот раз роль во всем этом мероприятии новая. Раньше мне просто назначали секцию, я ее проводил, заполнял «отчет» и шел пить кофеек со спокойной совестью. Сейчас иначе, вместо секций с кодом провожу финальные секции. Но, как по мне, это не главное отличие. Самое основное изменение в том, что необходимо просматривать большое кол-во кандидатов, которые уже прошли секции с кодом, анализировать их решения и т. д. Задач много, решения разные... И вот тут я почувствовал, что во всей этой лидовской кутерьме совсем позабыл про свою рутину с задачками.
Раньше я стабильно порешивал литкод, кодварс и прочее. Решил, что пора вернуться к этому занятию. Очень символично, что сегодня начало сентября и учебного года. Пока в планах решать по задачке в день, предлагаю вам ко мне присоедениться.
В конце сентября выложу, что из этого вышло. Будет круто, если в комментах вы тоже поделитесь тем, что получится за этот месяц у вас)
P.S. Буду рад, если в комменты к этому посту скинете ваши любимые подборки задачек)
🔥86❤14👍7❤🔥6👏2😍1😎1
Итоги первого месяца
Привет, работяги!
В прошлом месяце я решил вернуться к решению задачек на «Литкоде». Старался решать минимум по 1 задачке в будний день.
Итоги следующие: большую часть дней всё получилось, проблемы были по четвергам и в конце месяца я заболел, несколько дней провалялся с температурой, в итоге ритм сбился.
На первый взгляд может показаться, что челендж провален. Я как перфекционист раньше именно такие выводы и делал. В итоге сильно расстраивался, демотивировался и всё в таком духе.
НО! Какое-то время назад, достаточно давно, я начал бороться именно с пагубным перфекционизмом, не путать со здоровым перфекционизмом. Поэтому сейчас смотрю на челендж иначе. Главное не сделать всё идеально с первого раза, куда важнее после пропуска сделать выводы и снова вернуться на дистанцию и продолжать. Может звучать очень очевидно и слишком просто, но в этом и кроется опасность. Слишком легко недооценить идею.
Мне эта мысль сильно помогает делать что-то на длительной дистанции. Не опускать руки, если что-то не получилось. Дисциплина как мышца, ее тоже нужно тренировать, поэтому начинайте с малого, не бойтесь пропусков и старайтесь каждый следующий раз делать лучше. А я начинаю следующий месяц решения задачек)
Скидывайте свои результаты за месяц в комменты. Чтобы добавить интереса, предлагаю среди самых стойких решателей задач разыграть символический приз — созвон 1-1, на котором можем пообщаться на интересующие вас темы (в рамках программирования, конечно), поревьюить код, поговорить о книгах, развитии и карьере, мб смогу помочь вам каким-то советом. !Важно! Это не консультация, их я, как и раньше, проводить не планирую.
В следующем месяце поступим аналогично)
Если заинтересовала мысль о дисциплине и хочется глубже покопать в эту тему, то вот отличная книга.
Привет, работяги!
В прошлом месяце я решил вернуться к решению задачек на «Литкоде». Старался решать минимум по 1 задачке в будний день.
Итоги следующие: большую часть дней всё получилось, проблемы были по четвергам и в конце месяца я заболел, несколько дней провалялся с температурой, в итоге ритм сбился.
На первый взгляд может показаться, что челендж провален. Я как перфекционист раньше именно такие выводы и делал. В итоге сильно расстраивался, демотивировался и всё в таком духе.
НО! Какое-то время назад, достаточно давно, я начал бороться именно с пагубным перфекционизмом, не путать со здоровым перфекционизмом. Поэтому сейчас смотрю на челендж иначе. Главное не сделать всё идеально с первого раза, куда важнее после пропуска сделать выводы и снова вернуться на дистанцию и продолжать. Может звучать очень очевидно и слишком просто, но в этом и кроется опасность. Слишком легко недооценить идею.
Мне эта мысль сильно помогает делать что-то на длительной дистанции. Не опускать руки, если что-то не получилось. Дисциплина как мышца, ее тоже нужно тренировать, поэтому начинайте с малого, не бойтесь пропусков и старайтесь каждый следующий раз делать лучше. А я начинаю следующий месяц решения задачек)
Скидывайте свои результаты за месяц в комменты. Чтобы добавить интереса, предлагаю среди самых стойких решателей задач разыграть символический приз — созвон 1-1, на котором можем пообщаться на интересующие вас темы (в рамках программирования, конечно), поревьюить код, поговорить о книгах, развитии и карьере, мб смогу помочь вам каким-то советом. !Важно! Это не консультация, их я, как и раньше, проводить не планирую.
В следующем месяце поступим аналогично)
Если заинтересовала мысль о дисциплине и хочется глубже покопать в эту тему, то вот отличная книга.
🔥50👍18
Используете ли вы TypeScript?
Anonymous Poll
79%
13%
5%
2%
Enums - зло? Или мы просто не поняли замысел творца?
Вокруг enums в TS ходит большое кол-во споров. Кто-то их любит, кто-то ненавидит. Я был и в том, и в другом лагере. Давайте посмотрим на их плюсы и минусы(по моему мнению), чтобы вам было проще вывести для себя ответ. ВАЖНО!!! Я не призываю отказываться от enums, просто призывая подумать.
Прежде чем начнем, накидаю немного теории.
Если по-простому, то enum - набор именованных констант, который можно использовать как для хранения значений, так и для типизации.
Бывают числовыми(дефолтно), строковыми и смешанными. Выглядит это так:
➕:
Строковые enums удобны.
Вы сразу и константы сгруппировали по смыслу, и тип сделали. Лаконично и наглядно.
➕➖:
Нелогичное поведение при проверке значений.
В данном примере значение у элемента энама идентично строке, но в TS будет ошибка. Где-то это +, мол, мы явно говорим использовать только конкертный enum, где-то минус, бэкенд присылает вам просто строку, и тут вам будет недостаточно просто проверить значение, нужно писать тайпгард.
Реверсивность.
Числовые элементы enum(в значении число) являются реверсивными: по ключу получаем значение, по значению ключ. Выглядит это так:
Иногда это может вам пригодиться. Но как поведет себя вот такой энам?
Ответить на этот вопрос мы можем, если посмотрим в результат компиляции этого enum:
После этого ответ становится очевидным, но поведение, по моему мнению, странное. Сделали бы и на уникальность числовых значений проверки…
А как вам такой пример?
Логично было бы увидеть тут ошибку, т.к. у нас нет элемента со значением 25, но нет, ошибки от TS мы не увидим.
➖:
Лишний код.
Часто enums используют просто для типизации. Но не все задумываются, во что эти энамы компилируются. Многие уже привыкли, что типы в скомпилированный код не попадают… Тудуууум:
Знакомьтесь, ваш энам. И он поедет с вашим кодом к пользователю, даже если вам от него нужны только типы. И если у вас их много, то и лишнего когда у вас много.
Кто-то предложит использовать const enum. Я очень часто разрабатываю пакеты, поэтому нет, спасибо. Дока.
Они мерджатся.
Давайте взглянем на такой код:
В нем нет ошибки, он рабочий. Скомпилируется он в:
Следовательно, если у вас есть большой файлик с типами, то будьте готовы к тому, что вы случайно можете расширить какой-то другой enum. Для меня это строгий минус, т.к. поведение неявное.
Что делать если вы решили заменить часть или все ваши энамы.🔽
Вокруг enums в TS ходит большое кол-во споров. Кто-то их любит, кто-то ненавидит. Я был и в том, и в другом лагере. Давайте посмотрим на их плюсы и минусы(по моему мнению), чтобы вам было проще вывести для себя ответ. ВАЖНО!!! Я не призываю отказываться от enums, просто призывая подумать.
Прежде чем начнем, накидаю немного теории.
Если по-простому, то enum - набор именованных констант, который можно использовать как для хранения значений, так и для типизации.
Бывают числовыми(дефолтно), строковыми и смешанными. Выглядит это так:
enum BookGenre {
horror = 1,
comedy = 'comedy'
}
➕:
Строковые enums удобны.
Вы сразу и константы сгруппировали по смыслу, и тип сделали. Лаконично и наглядно.
enum BookGenre {
horror = 'horror',
comedy = 'comedy'
}
function logGenre(genre: BookGenre) {}
logGenre(BookGenre.comedy)
➕➖:
Нелогичное поведение при проверке значений.
В данном примере значение у элемента энама идентично строке, но в TS будет ошибка. Где-то это +, мол, мы явно говорим использовать только конкертный enum, где-то минус, бэкенд присылает вам просто строку, и тут вам будет недостаточно просто проверить значение, нужно писать тайпгард.
logGenre(BookGenre.comedy)
logGenre('comedy') // error
Реверсивность.
Числовые элементы enum(в значении число) являются реверсивными: по ключу получаем значение, по значению ключ. Выглядит это так:
enum BookGenre {
horror,
comedy
}
console.log(BookGenre.comedy) // 1
console.log(BookGenre[1]) // comedy
Иногда это может вам пригодиться. Но как поведет себя вот такой энам?
enum BookGenre {
horror = 1,
comedy = 1
}
console.log(BookGenre[1]) // ?
Ответить на этот вопрос мы можем, если посмотрим в результат компиляции этого enum:
var BookGenre;
(function (BookGenre) {
BookGenre[BookGenre["horror"] = 1] = "horror";
BookGenre[BookGenre["comedy"] = 1] = "comedy";
})(BookGenre || (BookGenre = {}));
После этого ответ становится очевидным, но поведение, по моему мнению, странное. Сделали бы и на уникальность числовых значений проверки…
А как вам такой пример?
console.log(BookGenre[25])
Логично было бы увидеть тут ошибку, т.к. у нас нет элемента со значением 25, но нет, ошибки от TS мы не увидим.
➖:
Лишний код.
Часто enums используют просто для типизации. Но не все задумываются, во что эти энамы компилируются. Многие уже привыкли, что типы в скомпилированный код не попадают… Тудуууум:
var BookGenre;
(function (BookGenre) {
BookGenre[BookGenre["horror"] = 1] = "horror";
BookGenre[BookGenre["comedy"] = 1] = "comedy";
})(BookGenre || (BookGenre = {}));
Знакомьтесь, ваш энам. И он поедет с вашим кодом к пользователю, даже если вам от него нужны только типы. И если у вас их много, то и лишнего когда у вас много.
Кто-то предложит использовать const enum. Я очень часто разрабатываю пакеты, поэтому нет, спасибо. Дока.
Они мерджатся.
Давайте взглянем на такой код:
enum BookGenre {
horror = 'horror',
comedy = 'comedy'
}
// много строк между
enum BookGenre {
drama = 'drama'
}
В нем нет ошибки, он рабочий. Скомпилируется он в:
var BookGenre;
(function (BookGenre) {
BookGenre["horror"] = "horror";
BookGenre["comedy"] = "comedy";
})(BookGenre || (BookGenre = {}));
(function (BookGenre) {
BookGenre["drama"] = "drama";
})(BookGenre || (BookGenre = {}));
Следовательно, если у вас есть большой файлик с типами, то будьте готовы к тому, что вы случайно можете расширить какой-то другой enum. Для меня это строгий минус, т.к. поведение неявное.
Что делать если вы решили заменить часть или все ваши энамы.
Please open Telegram to view this post
VIEW IN TELEGRAM
www.typenoscriptlang.org
Handbook - Enums
How TypeScript enums work
🔥29👍13❤1
ТОП - Тёма о программировани
Enums - зло? Или мы просто не поняли замысел творца? Вокруг enums в TS ходит большое кол-во споров. Кто-то их любит, кто-то ненавидит. Я был и в том, и в другом лагере. Давайте посмотрим на их плюсы и минусы(по моему мнению), чтобы вам было проще вывести…
Альтернативы
Для группы констант, когда типизация не нужна:
Если нужны только типы - юнион литералов(обожаю их, максимум пользы и минимум лишнего):
Нужны и значения, и типы:
Для группы констант, когда типизация не нужна:
const BookGenre = {
horror: 'horror',
comedy: 'comedy'
} as const
Если нужны только типы - юнион литералов(обожаю их, максимум пользы и минимум лишнего):
type BookGenre = 'horror' | 'comedy' // как обычный тип уйдет на компиляции
Нужны и значения, и типы:
const BookGenre = {
horror: 'horror',
comedy: 'comedy'
} as const
type BookGenre = keyof typeof BookGenre
function logGenre(genre: BookGenre) {} // тип
logGenre(BookGenre.comedy) // значение
🔥43👍12
А вы используете enums?
Anonymous Poll
35%
21%
17%
27%
HolyJs 2024
Сегодня и завтра буду на Холли. В этом году без доклада, буду в новой роли - член программного комитета. Позже скину свою подборку докладов, с небольшим обзором.
Если вы сегодня и завтра будете на Холли, то подходите, буду рад познакомиться, пообщаться, обсудить разработку)
Если у вас не получилось приехать на офлайн часть, но очень хочется заглянуть, то заходите на стрим к SeberiaCanCode. Ребята стримят прямо с конфы(доклады не стримят), задают вопросы спикерам и общаются с участниками о разработке.
Сегодня и завтра буду на Холли. В этом году без доклада, буду в новой роли - член программного комитета. Позже скину свою подборку докладов, с небольшим обзором.
Если вы сегодня и завтра будете на Холли, то подходите, буду рад познакомиться, пообщаться, обсудить разработку)
Если у вас не получилось приехать на офлайн часть, но очень хочется заглянуть, то заходите на стрим к SeberiaCanCode. Ребята стримят прямо с конфы(доклады не стримят), задают вопросы спикерам и общаются с участниками о разработке.
Telegram
🧊 siberiacancode x IT-ХОЗЯЕВА
Канал для frontend разработчиков
Смотрим самые новые и популярные frontend технологии 🔥
https://boosty.to/siberiacancode
https://www.youtube.com/@siberiacancode
https://www.twitch.tv/siberiacancode
https://github.com/siberiacancode
Смотрим самые новые и популярные frontend технологии 🔥
https://boosty.to/siberiacancode
https://www.youtube.com/@siberiacancode
https://www.twitch.tv/siberiacancode
https://github.com/siberiacancode
❤20👍8🔥7
Конференции😀
Сейчас еду в поезде из Питера с HolyJs и решил поделиться с вами своими мыслями о конфах.
Что для меня конференция
1. Мотивация🔥 . Я много раз говорил о том, что люблю Яндекс, Шри за возможность работать с очень мотивированными людьми(берем среднее по больнице), которые горят своим делом. Конференция это еще одно такое место. Рассказы о каких-то новых хитроумных велосипедах, героически решённых сложных задачах, общение с увлеченными инженерами очень сильно меня мотивируют и заряжают энергией(даже перекрывают недосыпы😴 )
2. Расширение кругозора👨💻 . Какие бы мы любопытные не были у нас не всегда есть возможность попробовать что-то новенькое во всех возможных кейсах, а если эта технология еще и не входит в ваш стек(потенциальный стек), то вероятность становится еще меньше. И если с новинками в вашем стеке все понятно, то с решениями за его пределами возникает резонный вопрос - зачем мне вообще про них слушать? Для меня технологии это в первую очередь реализация идей, задумок, которые могут прокачать уже ваши решения, натолкнуть на новые мысли и идеи.
3. Общение📞 . Конфа это возможность пообщаться 1-1, подискутировать, обменяться опытом, идеями. Это возможность узнать, как устроено где-то еще, кроме вашей компании/проекте/коллективе, познакомиться с другим взглядом на ежедневные рутинные задачи и проблемы.
Ну и бонусный пункт — конференция это весело🥳
Обзорчик с понравившимися мне докладами уже готовится. Нужно отсмотреть то, на что не успел сходить, и пересмотреть некоторые зацепившие рассказы🧑🎓
А пока обзор готовится, вы можете сделать свой обзор после конфы и рассказать своим коллегам. Подумайте, чтобы вы посоветовали глянуть, что может пригодится им в работе. Организуйте небольшую встречку с рассказом. Я уверен, что они будут вам благодарны)
А чем конференции интересны вам?
Сейчас еду в поезде из Питера с HolyJs и решил поделиться с вами своими мыслями о конфах.
Что для меня конференция
1. Мотивация
2. Расширение кругозора
3. Общение
Ну и бонусный пункт — конференция это весело
Обзорчик с понравившимися мне докладами уже готовится. Нужно отсмотреть то, на что не успел сходить, и пересмотреть некоторые зацепившие рассказы
А пока обзор готовится, вы можете сделать свой обзор после конфы и рассказать своим коллегам. Подумайте, чтобы вы посоветовали глянуть, что может пригодится им в работе. Организуйте небольшую встречку с рассказом. Я уверен, что они будут вам благодарны)
А чем конференции интересны вам?
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥40❤11🥰6👍1
1
Server components🤓
Начиная с хуков, React активно атакует наши устоявшиеся ментальные модели. Серверные компоненты не являются исключением. Частенько встречаюсь с непониманием их сути, а следовательно, и ошибками использования. Давайте в нескольких постах попробую максимально просто рассказать о них, их плюсах и способах использования.
Что это такое?🤔
На первый взгляд может показаться, что разница между серверными и клиентскими компонентами в месте рендеринга. Одни на сервере, а другие на клиенте. Но это не совсем так.
Серверные компоненты — компоненты без клиентской логики. Это значит, что они отрендерились только один раз на сервере и больше перерендериваться не будут. Грубо говоря, статика.
Их «статичность» накладывает определенные ограничения:
1. Нельзя поменять отображение
2. Нельзя использовать API браузера
3. Нельзя использовать (как и большую часть API React)
Клиентские компоненты — компоненты с клиентской логикой. Это значит, что они рендерятся и на сервере, и на клиенте. А следовательно, могут перерендериваться. Грубо говоря, динамика. Это стандартные компоненты, которые отлично всё могут.
Вопрос: зачем нам серверные, если у них столько ограничений?
Простейшая загрузка данных🛞
Код, необходимый для их рендеринга, остается на сервере👍
Так как компонент не перерендерится, то на клиенте нам нужен лишь результат и вспомогательный кол для правильного согласования с остальной частью дерева.
Клиентской части механизма рендеринга React эти компоненты неинтересны совсем (почти)😴
Эти компоненты на клиенте статичны. Они не генерят перерендеры, следовательно, и мониторить их не надо, перерендеривать их не надо и т. д.
Итого.
Мы получаем идеальный инструмент для отрисовки статичных(неинтерактивных) частей нашего интерфейса. Остается только правильно организовать композицию, об этом напишу в следующем посте.
Начиная с хуков, React активно атакует наши устоявшиеся ментальные модели. Серверные компоненты не являются исключением. Частенько встречаюсь с непониманием их сути, а следовательно, и ошибками использования. Давайте в нескольких постах попробую максимально просто рассказать о них, их плюсах и способах использования.
Что это такое?
На первый взгляд может показаться, что разница между серверными и клиентскими компонентами в месте рендеринга. Одни на сервере, а другие на клиенте. Но это не совсем так.
Серверные компоненты — компоненты без клиентской логики. Это значит, что они отрендерились только один раз на сервере и больше перерендериваться не будут. Грубо говоря, статика.
Их «статичность» накладывает определенные ограничения:
1. Нельзя поменять отображение
2. Нельзя использовать API браузера
3. Нельзя использовать (как и большую часть API React)
Клиентские компоненты — компоненты с клиентской логикой. Это значит, что они рендерятся и на сервере, и на клиенте. А следовательно, могут перерендериваться. Грубо говоря, динамика. Это стандартные компоненты, которые отлично всё могут.
Вопрос: зачем нам серверные, если у них столько ограничений?
Простейшая загрузка данных
export default async function Movie({ movieId }) {
const movie = await getMovie(movieId); // запрос на сервер
return <main>Movie: {movie.name}</main>;
}
Код, необходимый для их рендеринга, остается на сервере
Так как компонент не перерендерится, то на клиенте нам нужен лишь результат и вспомогательный кол для правильного согласования с остальной частью дерева.
Клиентской части механизма рендеринга React эти компоненты неинтересны совсем (почти)
Эти компоненты на клиенте статичны. Они не генерят перерендеры, следовательно, и мониторить их не надо, перерендеривать их не надо и т. д.
Итого.
Мы получаем идеальный инструмент для отрисовки статичных(неинтерактивных) частей нашего интерфейса. Остается только правильно организовать композицию, об этом напишу в следующем посте.
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡30🔥19❤9👍3
ТОП - Тёма о программировани
Server components🤓 Начиная с хуков, React активно атакует наши устоявшиеся ментальные модели. Серверные компоненты не являются исключением. Частенько встречаюсь с непониманием их сути, а следовательно, и ошибками использования. Давайте в нескольких постах…
Вы уже используете ServerComponents в рабочих проектах?
Anonymous Poll
19%
5%
67%
9%
Со старта канала прошло много времени. За это время аудитория сильно выросла, в моей карьере было много событий и изменений. Появляется желание писать о большем кол-ве тем, тк зона моих интересов растет. Хочу спросить вас, что вам было бы интересно?🤔
Anonymous Poll
67%
57%
67%
52%
35%
45%
34%
22%
29%
48%
❤13🔥3
Работяги, поменял фото канала, не теряйте)
Всем хорошего рабочего дня и недели👨💻
Всем хорошего рабочего дня и недели
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥69👍17😍7❤🔥3😁1
Введение в паттерны и архитектуру🏠
Работяги! В прошлом опросе тема архитектуры и паттернов набрала больше всех голосов, поэтому буду стараться писать о ней чаще.
Реакт на втором месте, поэтому скоро тоже будет.👨💻
Хочу начать с самого нуля, с того, как я бы сейчас изучал тему паттернов и архитектуры, будь я начинающим в этой области фронтендером(для других схема тоже рабочая, но нужно немного адаптировать). В этом посте посмотрим на базовый роудмап, и далее буду писать уже точечно по темам, которые вызывают у многих сложности.
🧑🎓 Нам понадобится:
1. «Паттерны объектно-ориентированного проектирования» Эрих Гамма, Ричард Хелм, Роберт Джонсон, Джон Влиссидес — знаменитая книга банды четырех. Кто-то ее списал в утиль, но не я. Считаю ее базовой, нужно лишь адаптировать рецепты под свою область.
2. «Рефакторинг-гуру» — великолепный материал. Как книга банды четырех, но более простым языком и с большим кол-вом примеров(есть и на TS).
3. «Dive Into DESIGN PATTERNS» Oleksandr Shvets — замечательная книга для новичков в архитектуре и паттернах от создателя «Рефакторинг-гуру».
4. Сайт Эдди Османи — топ-труд по шаблонам для фронтендера. У Эдди есть еще и книги, если хотите, можете и их почитать, они хорошие.
5. «Чистая архитектура. Искусство разработки программного обеспечения» Роберт Мартин — последняя в списке, но не последняя по значению.
👨💻 Теперь инструкция:
1. База-базовая. Читаем книгу «Dive Into DESIGN PATTERNS» Oleksandr Shvets. Читаем всё до главы «Каталог паттернов». Эта часть объяснит нам, что вообще такое эта архитектура, зачем о ней думать, какие базовые критерии есть и где в этом всем паттерны. Расскажет про солид, который станет базой для наших решений.
2. Паттерны. Далее начинаются паттерны. Читаем по одному паттерну с сайта «Рефакторинг-гуру». Смотрим на этом же сайте пример на TS. После этого читаем про него же у банды четырех(там написано максимально сухо и академично, но классический вариант знать надо). После этого смотрим на сайт Эдди Османи, если наш паттерн есть там, то читаем его. В итоге мы получаем следующую картину: понятное описание + пример на TS + классическое описание + адаптация под JS/Frontend. Таким образом у вас будет полная картина о каждом паттерне, останется шлифануть практикой.
3. Практика. После изучения паттерна не пихайте его везде. Не нужно подгонять задачи под паттерны, адаптируйте паттерны под ваши ситуации. Шаблоны должны быть органично использованы. В самом начале этой органичности, скорее всего, не будет, понимание приходит с опытом. Для тренировки можете брать места в ваших проектах, которые болят, и на листочке их перепроектировать различными вариантами, реализовывать необязательно, схемы на листочке для тренировки будет достаточно. Листочек и карандаш вообще крутой тренажер. Помните, каждый паттерн — это в первую очередь идея, а уже после реализация, поэтому не бойтесь адаптировать, главное — не теряйте сути.
4. Развиваем. После изучения базы про архитектуру, солида и базового набора паттернов можно переходить к изучению более специфичных паттернов(остальные паттерны с сайта Эдди Османи) и дальнейшему погружению в архитектуру(Чистая архитектура Мартина).
Тут ничего нет про FSD, структуру папок в вашем проекте и т. д. Да, я считаю, что нет смысла строить дворец на фундаменте от сельского туалета, поэтому предлагаю стартовать с базы. После этого вам будет проще видеть полную картину и принимать решения самостоятельно, а не следовать как зомби правилам конкретной методологии.
Работяги! В прошлом опросе тема архитектуры и паттернов набрала больше всех голосов, поэтому буду стараться писать о ней чаще.
Реакт на втором месте, поэтому скоро тоже будет.
Хочу начать с самого нуля, с того, как я бы сейчас изучал тему паттернов и архитектуры, будь я начинающим в этой области фронтендером(для других схема тоже рабочая, но нужно немного адаптировать). В этом посте посмотрим на базовый роудмап, и далее буду писать уже точечно по темам, которые вызывают у многих сложности.
1. «Паттерны объектно-ориентированного проектирования» Эрих Гамма, Ричард Хелм, Роберт Джонсон, Джон Влиссидес — знаменитая книга банды четырех. Кто-то ее списал в утиль, но не я. Считаю ее базовой, нужно лишь адаптировать рецепты под свою область.
2. «Рефакторинг-гуру» — великолепный материал. Как книга банды четырех, но более простым языком и с большим кол-вом примеров(есть и на TS).
3. «Dive Into DESIGN PATTERNS» Oleksandr Shvets — замечательная книга для новичков в архитектуре и паттернах от создателя «Рефакторинг-гуру».
4. Сайт Эдди Османи — топ-труд по шаблонам для фронтендера. У Эдди есть еще и книги, если хотите, можете и их почитать, они хорошие.
5. «Чистая архитектура. Искусство разработки программного обеспечения» Роберт Мартин — последняя в списке, но не последняя по значению.
1. База-базовая. Читаем книгу «Dive Into DESIGN PATTERNS» Oleksandr Shvets. Читаем всё до главы «Каталог паттернов». Эта часть объяснит нам, что вообще такое эта архитектура, зачем о ней думать, какие базовые критерии есть и где в этом всем паттерны. Расскажет про солид, который станет базой для наших решений.
2. Паттерны. Далее начинаются паттерны. Читаем по одному паттерну с сайта «Рефакторинг-гуру». Смотрим на этом же сайте пример на TS. После этого читаем про него же у банды четырех(там написано максимально сухо и академично, но классический вариант знать надо). После этого смотрим на сайт Эдди Османи, если наш паттерн есть там, то читаем его. В итоге мы получаем следующую картину: понятное описание + пример на TS + классическое описание + адаптация под JS/Frontend. Таким образом у вас будет полная картина о каждом паттерне, останется шлифануть практикой.
3. Практика. После изучения паттерна не пихайте его везде. Не нужно подгонять задачи под паттерны, адаптируйте паттерны под ваши ситуации. Шаблоны должны быть органично использованы. В самом начале этой органичности, скорее всего, не будет, понимание приходит с опытом. Для тренировки можете брать места в ваших проектах, которые болят, и на листочке их перепроектировать различными вариантами, реализовывать необязательно, схемы на листочке для тренировки будет достаточно. Листочек и карандаш вообще крутой тренажер. Помните, каждый паттерн — это в первую очередь идея, а уже после реализация, поэтому не бойтесь адаптировать, главное — не теряйте сути.
4. Развиваем. После изучения базы про архитектуру, солида и базового набора паттернов можно переходить к изучению более специфичных паттернов(остальные паттерны с сайта Эдди Османи) и дальнейшему погружению в архитектуру(Чистая архитектура Мартина).
Тут ничего нет про FSD, структуру папок в вашем проекте и т. д. Да, я считаю, что нет смысла строить дворец на фундаменте от сельского туалета, поэтому предлагаю стартовать с базы. После этого вам будет проще видеть полную картину и принимать решения самостоятельно, а не следовать как зомби правилам конкретной методологии.
Please open Telegram to view this post
VIEW IN TELEGRAM
refactoring.guru
Design Patterns
Design Patterns are typical solutions to commonly occurring problems in software design. They are blueprints that you can customize to solve a particular design problem in your code.
51🔥92👍17❤9❤🔥1
Иллюстрация к посту выше
В основе у нас “здравый смысл” - максимально абстрактно.
Потом базовые качества хорошей архитектуры
После уже более конкретные принципы проектирования
Далее еще более конкретные принципы
Потом уже паттерны
Чем дальше от центра, тем больше конкретики, самый крайний уровень это уже кокретные решения, которые строятся на том, что находится внутри.
В основе у нас “здравый смысл” - максимально абстрактно.
Потом базовые качества хорошей архитектуры
После уже более конкретные принципы проектирования
Далее еще более конкретные принципы
Потом уже паттерны
Чем дальше от центра, тем больше конкретики, самый крайний уровень это уже кокретные решения, которые строятся на том, что находится внутри.
🔥45👍9❤4
1x1: о фронтенд-разработке в Яндексе
Совсем забыл с вами поделиться этим видосом. Летом записывали лайтовый формат для канала Яндекса, примерно месяц назад его опубликовали. В нем нет хардовых вещей, но есть интересные истории, шуточки и мемы.
Приятного просмотра и хорошего всем дня👨💻
Совсем забыл с вами поделиться этим видосом. Летом записывали лайтовый формат для канала Яндекса, примерно месяц назад его опубликовали. В нем нет хардовых вещей, но есть интересные истории, шуточки и мемы.
Приятного просмотра и хорошего всем дня
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
1x1: о фронтенд-разработке в Яндексе
1х1 — это формат регулярных рабочих встреч с коллегами в Яндексе, а ещё — одноимённая рубрика на канале Яндекса. Здесь встречаются двое сотрудников из разных команд, которые занимаются похожими задачами. Маркетологи, инженеры, разработчики и дизайнеры обсуждают…
👍30🔥19⚡6❤2