Создание профессионального веб-портфолио на SvelteKit и TailwindCSS: полный гайд

freeCodeCamp.org 75 тыс. 1 ч 13 мин 4 мин 03.10.2023
Главное

В современном мире разработки ПО личное портфолио перестало быть просто списком ссылок на GitHub. По мнению фулстек-разработчика и автора образовательного контента Джеймса Макартура, персональный сайт — это «цифровое пространство, демонстрирующее не только навыки, но и индивидуальность программиста» . В новом масштабном туториале на канале freeCodeCamp.org Макартур детально разбирает процесс создания высокопроизводительного и эстетичного веб-портфолио, используя связку SvelteKit и TailwindCSS.

🛠 Основы стека: Почему SvelteKit и TailwindCSS? 0:00

Выбор инструментов для проекта обусловлен их эффективностью и скоростью разработки. SvelteKit выступает в роли мощного фреймворка, обеспечивающего серверный рендеринг (SSR) и удобную систему роутинга . В отличие от традиционных библиотек, Svelte переносит большую часть работы на этап компиляции, что делает итоговые приложения легче.

TailwindCSS дополняет архитектуру как утилитарный CSS-фреймворк, позволяющий создавать уникальные интерфейсы без написания громоздких кастомных стилей . Макартур утверждает, что комбинация этих инструментов предоставляет разработчикам «бесшовный опыт» при создании интерактивных и адаптивных веб-приложений.

Проект, предлагаемый в обучении, включает:

🚀 Инициализация и архитектура проекта 2:39

Процесс начинается с настройки рабочего окружения. Макартур использует Visual Studio Code и терминал для выполнения стандартных команд инициализации .

Основные шаги по развертыванию среды:

  1. Создание проекта: npm create svelte@latest (выбирается шаблон Skeleton Project без проверки типов) .
  2. Установка зависимостей Tailwind: npm install -D tailwindcss postcss autoprefixer .
  3. Инициализация конфигурации: npx tailwindcss init -p .

Автор уделяет особое внимание структуре файлов в SvelteKit. Папка src/routes является ключевой: файл +layout.svelte служит оберткой для всего приложения, позволяя сохранять состояние хедера и футера при навигации, а +page.svelte отвечает за контент конкретной страницы . Для глобальных стилей создается файл app.css, где подключаются базовые директивы Tailwind (@tailwind base, components, utilities).

🎨 Визуальное оформление: Типографика и анимация 6:46

Для придания портфолио профессионального вида Макартур интегрирует внешние ресурсы. В качестве основного шрифта для заголовков выбран Poppins, а для основного текста — Roboto из библиотеки Google Fonts . Иконки подключаются через Font Awesome CDN .

Особый акцент сделан на библиотеке Particles.js. Это легковесное решение позволяет создать эффект «движущихся частиц» на заднем плане, что, по словам автора, делает сайт визуально «глубже и интереснее» .

Настройка анимации включает:

🏗 Разработка компонентов: Хедер и логика скролла 15:06

Одной из «фишек» проекта является динамический хедер, меняющий свой вид при прокрутке страницы. Макартур реализует это через привязку переменной Y к состоянию окна браузера с помощью компонента <svelte:window bind:scrollY={y} /> .

Логика изменения стилей хедера:

Внутри хедера Макартур использует блок {#each tabs as tab, i} для итерации по массиву навигационных ссылок (проекты, о себе, блог) . Также реализована кнопка «Get in Touch», имеющая кастомный эффект наведения (hover) с использованием группы Tailwind-классов group-hover .

📂 Демонстрация работ через Slot и Props 34:44

Раздел проектов (Creative Endeavors) построен на принципе переиспользуемости. Макартур создает компонент Step.svelte, который принимает данные через пропсы (export let step) и использует механизм слотов (<slot />) для вставки произвольного HTML-кода .

В туториале разбираются три примера проектов:

  1. Small James Store — магазин мерча на Next.js и Stripe .
  2. Ultimate Todos — фулстек-приложение с использованием Firebase/Firestore .
  3. Pokedex — приложение на SvelteKit, потребляющее внешнее API .

Использование слотов позволяет гибко настраивать описание каждого проекта, сохраняя при этом единую визуальную структуру карточек с иконками и кнопками перехода .

📊 Таблица компетенций и блок «О себе» 50:01

Для секции «About Me» автор применяет псевдоэлементы before и after в Tailwind для создания стильных декоративных линий вокруг заголовков . Макартур подчеркивает важность «софт-скиллов», поэтому включает в описание такие пункты, как навыки коммуникации и продуктовый дизайн .

Финальным штрихом контентной части становится сравнительная таблица. В ней автор в шутливой, но эффективной форме противопоставляет «Кандидата №1» и «Меня», используя иконки галочек и крестиков для демонстрации превосходства в критическом мышлении и способностях к программированию .

Технически таблица реализована с горизонтальным скроллом на мобильных устройствах (overflow-x-scroll), чтобы данные оставались читаемыми на любых экранах .

🚀 Финализация и адаптивность 1:07:34

В завершение Макартур создает футер с контактами и ссылками на GitHub и LinkedIn . Особое внимание уделяется адаптивности (responsiveness): на протяжении всего урока используются префиксы sm:, md: и lg:, чтобы макет корректно перестраивался из одноколоночного на мобильных устройствах в многоколоночный на десктопах .

Автор призывает зрителей не просто копировать код, а вносить свои изменения и делиться результатами в сообществе. По мнению Джеймса, создание такого портфолио — это лучший способ заявить о себе в индустрии, имея на руках живой, размещенный в сети проект .

💬 Цитаты

«Веб-портфолио нужно многим: тем, кто ищет работу в тех-сфере, или тем, кто хочет иметь свое пространство в интернете для демонстрации талантов.»

Джеймс Макартур 00:39

«SvelteKit и Tailwind CSS вместе предлагают разработчикам бесшовный опыт создания интерактивных приложений.»

Джеймс Макартур 00:26
👥 Спикер
🔗 Упомянутые сайты и проекты
📖 Термины
SvelteKit
Фреймворк на базе Svelte для создания веб-приложений с поддержкой SSR и маршрутизации.
TailwindCSS
Утилитарный CSS-фреймворк для быстрой верстки через классы прямо в HTML-разметке.
SSR (Server-Side Rendering)
Рендеринг страницы на стороне сервера перед отправкой ее в браузер клиента.
Slot
Механизм в Svelte для передачи HTML-контента внутрь дочернего компонента.
Props
Свойства, передаваемые от родительского компонента к дочернему для настройки его поведения или содержимого.
📊 Цифры
⚖️ Другая сторона
Технологии и IT SvelteKit TailwindCSS Particles.js Web Development freeCodeCamp.org