и посмотреть медиа
Библиотека фронтендера - JS React
и посмотреть медиа
Все полезное для фронтенда: JavaScript, React.js, Angular.js, Vue.js в одном канале.
Все полезное для фронтенда: JavaScript, React.js, Angular.js, Vue.js в одном канале.
Комплексный ресурс по фронтенд-технологиям. Статьи, гайды и примеры по JS, React, Angular, Vue. Идеально для изучения и применения в проектах.
💡 Vue.js: не усложняйте v-bind В Vue часто можно встретить такой код: 🔴 На первый взгляд кажется, что :user="user" и :config="config" избыточны. Но здесь двоеточие — это сокращение для v-bind: 🔴 При этом Vue позволяет сократить запись ещё сильнее, если имя пропса совпадает с именем переменной: То есть Vue сам понимает, что нужно передать значения переменных user и config в одноимённые props. Мелочь, но в компонентах с большим количеством props заметно чище. 📍 Навигация: [Вакансии] 🐸 Библиотека фронтендера #hotfix
Открыть канал и посмотреть медиа🤔 Вопрос с собеседования Что выведет этот код? ❤️ — 0 1 2 🔥 — 3 3 3 👍 — 0 0 0 👇 Правильный ответ (нажми, чтобы прочитать): 🔘 Будет: 3 3 3 var имеет function scope, поэтому все три callback замыкаются на одну и ту же переменную i. К моменту выполнения setTimeout цикл уже закончился, а i равен 3. 🔘 Если заменить var на let: for (let i = 0; i < 3; i++) { setTimeout(() => console.log(i), 0); } получим 0 1 2, потому что let создаёт отдельную binding-переменную для каждой итерации. 📍 Навигация: [Вакансии] 🐸 Библиотека фронтендера #career_merge
Открыть канал и посмотреть медиа🤩 А что, если написать свой текстовый редактор? «VS Code слишком тяжёлый. Сделаю свой редактор!» — примерно так начался эксперимент одного разработчика. 🔘 Первый вариант — всё рисовать через . Курсор, текст, подсветка строки, ввод с клавиатуры — работает. Но почти всё приходится реализовывать самостоятельно: canvas.addEventListener("pointerdown", positionCursor); document.addEventListener("keydown", moveCursor); И быстро выясняется проблема: canvas ничего не знает о тексте. Нет нормального выделения, undo/redo, скроллинга и доступности. 🔘 Тогда появляется идея использовать contenteditable: Браузер сразу берёт на себя выделение текста, историю изменений и часть accessibility. Но на больших текстах производительность становится непредсказуемой. 🔘 Поэтому следующий кандидат — обычный : И неожиданно он оказывается лучшим вариантом для длинных файлов. Правда, синтаксическую подсветку приходится строить отдельным слоем поверх текста. 📍 А потом начинается самое интересное: Unicode. "🍋🟩".length; // 5 [..."🍋🟩"].length; // 3 const segmenter = new Intl.Segmenter("en", { granularity: "grapheme" }); [...segmenter.segment("🍋🟩")].length; // 1 Один визуальный символ может состоять из нескольких UTF-16 code units и нескольких Unicode code points. В итоге автор получил редактор, который выглядит примерно на 90% готовым, но имеет лишь 1% возможностей настоящего редактора. И именно оставшиеся 10% — выделение, виртуализация, подсветка, табуляция, скроллинг, Unicode и accessibility — превращают «простой текстовый редактор» в огромный проект. 📍 Навигация: [Вакансии] 🐸 Библиотека фронтендера #under_hood
Открыть канал и посмотреть медиа🐱 SQL на котиках JOIN — это способ соединить данные из разных таблиц по общему полю. В видео разбирают: — разницу между INNER и LEFT JOIN — почему строки могут «пропадать» — как формируется итоговый результат Подойдёт новичкам, тем, кто путается в JOIN, и всем, кто хочет перестать писать запросы вслепую. 📍 Навигация: [Вакансии] 🐸 Библиотека фронтендера #read_watch #sql
Открыть канал и посмотреть медиа🤩 Для поворота необязательно считать градусы. В CSS есть единица turn: 1 turn = полный оборот = 360°. Например, 0.5turn — это 180°, а 2turn — два полных оборота. Особенно удобно, когда значение превышает 360°. 📍 Навигация: [Вакансии] 🐸 Библиотека фронтендера #readme
Открыть канал и посмотреть медиа💡 Container Queries в действии Медиазапросы смотрят на размер viewport, а Container Queries — на размер самого контейнера. 📍 В примере кнопка меняет своё содержимое в зависимости от доступного пространства: если контейнер становится слишком узким, текст ADD TO CART скрывается, а иконка корзины остаётся. @container (max-width: 200px) { .button-text { display: none; } } Удобный подход для адаптивных компонентов, которые могут использоваться в разных местах интерфейса. 📍 Навигация: [Вакансии] 🐸 Библиотека фронтендера #readme
Открыть канал и посмотреть медиа✨ React Bits — 165+ готовых анимаций для React Библиотека с копипаст-готовыми компонентами для тех случаев, когда хочется добавить интерфейсу немного магии, но писать анимацию с нуля лень: → текстовые анимации и эффекты → интерактивные UI-компоненты → анимированные фоны → эффекты для изображений и видео → версии для JS/TS и CSS/Tailwind Компоненты можно устанавливать через CLI или просто забрать исходный код и адаптировать под свой проект. Есть и дополнительные инструменты: Background Studio, Shape Magic и Texture Lab — для создания фонов, SVG и визуальных эффектов. 🔗 GitHub 📍 Навигация: [Вакансии] 🐸 Библиотека фронтендера #stack
Открыть канал и посмотреть медиа✅ Правильный ответ: ❤️ 1 Почему: все три вызова используют значение count из текущего рендера. При count = 0 каждый вызов фактически планирует обновление до 1. Если заменить на: setCount(c => c + 1); setCount(c => c + 1); setCount(c => c + 1); тогда результатом будет 3. 📍 Навигация: [Вакансии] 🐸 Библиотека фронтендера #code_challenge
Открыть канал и посмотреть медиаЧто выведет код? 🔥 — 3 ❤️ — 1 🥰 — 2 🤔 — ошибка 📍 Навигация: [Вакансии] 🐸 Библиотека фронтендера #code_challenge
Открыть канал и посмотреть медиаSolo los usuarios registrados pueden compartir su opinión.
¡Sé el primero en compartir tu experiencia con este recurso!
Compilación de Android- juegos y aplicaciones. Nuevos lanzamientos y programas populares para smartphones.