Разработчик JavaScript/TypeScript — до 240 000 ₽, удаленно (Москва)
Frontend-разработчик — от 150 000 до 180 000 ₽, удаленно (Москва)
Frontend Vue & Developer Middle++ — от 2000 до 2500 $, удаленно (ОАЭ)
Senior JavaScript developer — от 290 000 ₽, удаленно (Москва)
Frontend Team Lead — от 350 000 до 400 000 ₽, удаленно (Краснодар)
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3❤1
Vue Composition API позволяет создавать более гибкие, масштабируемые и чистые компоненты, разделяя логику по частям. Вместо того чтобы создавать большие компоненты, мы можем инкапсулировать логику в функции.
Почему важно:
1. Основы Composition API:
import { ref, computed } from 'vue';
export default {
setup() {
const count = ref(0);
const doubledCount = computed(() => count.value * 2);
const increment = () => {
count.value++;
};
return { count, doubledCount, increment };
},
};
—
ref():
создаёт реактивные данные для примитивных типов.—
computed():
создаёт вычисляемые значения.2. Создание повторно используемой логики:
Можно создать отдельные функции для логики, чтобы повторно использовать её в разных компонентах.
// useCounter.js
import { ref } from 'vue';
export function useCounter() {
const count = ref(0);
const increment = () => count.value++;
return { count, increment };
}
Теперь используем в компоненте:
import { useCounter } from './useCounter';
export default {
setup() {
const { count, increment } = useCounter();
return { count, increment };
},
};
3. Работа с API и асинхронными данными:
import { ref } from 'vue';
export function useFetch(url) {
const data = ref(null);
const loading = ref(true);
fetch(url)
.then(response => response.json())
.then(fetchedData => {
data.value = fetchedData;
loading.value = false;
});
return { data, loading };
}
Используем в компоненте:
import { useFetch } from './useFetch';
export default {
setup() {
const { data, loading } = useFetch('https://api.example.com');
return { data, loading };
},
};
— Разделяйте логику на composition functions для улучшения читаемости.
— Используйте ref для примитивов и reactive для объектов.
— Используйте computed для вычисляемых значений, а не для хранения состояния.
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5❤3👏1
14 июля вышел Next.js 15.4, в котором улучшена производительность и стабильность. Теперь команда
next build --turbopack
прошла все 8298 интеграционных тестов, что приближает Turbopack к стабильному релизу.Также был анонсирован первый взгляд на Next.js 16 — следующую мажорную версию, которая принесет новые возможности для разработки.
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🤔2👍1
Последний шанс залутать курсы Proglib Academy с выгодой 40% и пожизненным доступом.
До 1 августа действует скидка на курсы по математике для Data Science, алгоритмам и структурам данных, обновлённому Python, frontend-разработке с нуля, основам IT для непрограммистов, базовым моделям ML, а также архитектурам и шаблонам проектирования.
Выбираем и забираем 👈
P.S. Акция не распространяется на курсы «AI-агенты для DS-специалистов» и «ML для старта в Data Science».
До 1 августа действует скидка на курсы по математике для Data Science, алгоритмам и структурам данных, обновлённому Python, frontend-разработке с нуля, основам IT для непрограммистов, базовым моделям ML, а также архитектурам и шаблонам проектирования.
Выбираем и забираем 👈
P.S. Акция не распространяется на курсы «AI-агенты для DS-специалистов» и «ML для старта в Data Science».
❤5
Разработка интерфейсов для dApp — это не просто интеграция с блокчейном, а создание безопасных и удобных инструментов для пользователей.
Что в карточках:
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤3
Позволяет лениво подгружать компонент, разделяя бандл и ускоряя первую загрузку.
const LazyComponent = React.lazy(() => import("./MyComponent»));
Зачем это нужно:
— Уменьшает размер основного бандла.
— Улучшает скорость первого рендера (LCP).
— Позволяет загружать компонент только тогда, когда он реально нужен.
— Можно обернуть в Suspense, чтобы показать loader:
<Suspense fallback={<Spinner />}>
<LazyComponent />
</Suspense>
— Компонент загружается один раз и кешируется браузером.
— Можно использовать dynamic import и в Next.js:
const LazyComponent = dynamic(() => import("./MyComponent"), { ssr: false });
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2🔥1🥱1
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5😁3
Перед запуском проекта важно проверить его производительность. Этот чек-лист поможет выявить слабые места и обеспечить пользователям быстрый и стабильный опыт.
— Используйте инструменты, такие как Lighthouse или WebPageTest, чтобы измерить TBT и убедиться, что основная часть контента становится интерактивной в пределах 100-200 мс.
— Убедитесь, что изображения, видео и другие ресурсы, которые не видны при загрузке страницы, загружаются только по мере необходимости (lazy-loading).
— Оптимизируйте неважные задачи (например, отправка аналитики, обработка неважных фонов задач) с помощью requestIdleCallback, чтобы не блокировать основной поток выполнения.
— Используйте font-display: swap для веб-шрифтов, чтобы они не блокировали рендер страницы при их загрузке.
— Разделите код на части с помощью динамической загрузки (code splitting), чтобы минимизировать начальный бандл. Используйте defer или async для скриптов.
— Настройте заголовки кеширования для статичных ресурсов и используйте механизмы вроде stale-while-revalidate для API-запросов.
— Проверьте, что весь JavaScript, CSS и HTML сжаты и минифицированы, используя инструменты типа Terser или CSSNano.
— Используйте preload или prefetch для приоритетных ресурсов, чтобы ускорить их загрузку, а также отложите менее важные ресурсы.
— Прогоните ваше приложение через Lighthouse и WebPageTest, чтобы узнать, есть ли какие-то узкие места, которые могут замедлять работу.
🔧 Завершающая проверка:
— Пройдитесь по результатам и проверьте, не превышают ли важные метрики (например, FCP, LCP) пороговых значений.
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤5🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Работа с дизайнерами — это всегда вызов, когда их креативные идеи выходят за рамки привычного.
Вопрос от подписчика:
«Однажды дизайнер настоял на том, чтобы кнопки в интерфейсе были в стиле старых приложений Windows 95 — с анимациями и даже с мигающими кнопками. «Старый стиль», «кнопки, которые моргают», — все это нужно было сделать с помощью CSS. Конечно, такой запрос вызвал у меня вопросы и у всей команды, но в итоге мы смогли воссоздать эту атмосферу, только с использованием современных технологий.»
Поделитесь своими историями в комментариях
P.S. Если хотите задать вопрос, заполните нашу гугл-форму. Это займет 5 минут.
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
😁7👾1
Глубокий разбор проблем с производительностью TypeScript в больших проектах и монорепах.
В подкасте:
Разговор не про хейт TypeScript, а про то, как сделать его быстрым и удобным даже в огромных кодовых базах.
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤2🔥2
Доступность (A11y) — не про «особые случаи», а про качество интерфейса в целом. Если элемент невозможно использовать с клавиатуры, он недоступен. Если цветовая схема неразборчива — он недоступен.
Что разобрано в карточках:
Если вы ещё не проверяли свои компоненты на A11y — самое время начать.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11❤2👍2