Quickstarters
Как создать фронтенд на Sveltekit и подключить его к бэкенду?
34 мин
в этом учебном пособии вы создадите приложение список дел, используя sveltekit, и подключите его к управляемой службе бэкенда на базе back4app этот гид предназначен для вас, если вы хотите освоить основные операции crud (создание, чтение, обновление, удаление) и создать динамичный, отзывчивый интерфейс с использованием sveltekit к концу этого учебного пособия ваше приложение будет без проблем взаимодействовать с бэкендом, который обрабатывает хранение данных, аутентификацию и многое другое разработка полнофункционального приложения может быть сложной из за конфигурации бэкенда и управления базами данных чтобы упростить ваш рабочий процесс, мы используем back4app — надежный бэкенд как услугу — чтобы вы могли сосредоточиться на создании выдающегося фронтенда на sveltekit back4app предоставляет полностью управляемую nosql базу данных, аутентификацию, cloud code для пользовательской логики и sdk для плавной интеграции это позволяет вам создавать и развертывать масштабируемые приложения без управления серверной инфраструктурой основные выводы следуя этому учебному пособию, вы инициализируйте современный проект sveltekit с использованием vite интегрируйте службу бэкенда для управления данными вашего приложения реализуйте основные операции crud для динамичного списка дел разверните ваше полностью функциональное приложение, используя контейнеризованные рабочие процессы на back4app предварительные требования перед тем как начать, убедитесь, что у вас есть node js и npm установлены на вашем компьютере проверьте, выполнив node v и npm v базовые знания sveltekit , включая маршрутизацию, функции загрузки и реактивные переменные аккаунт back4app для управления вашими бэкенд сервисами зарегистрируйтесь на back4app https //www back4app com/ если вы еще этого не сделали с этими предварительными требованиями вы готовы начать создание вашего проекта настройка проекта начните с настройки вашей локальной среды разработки и инициализации нового проекта sveltekit убедитесь, что у вас установлен node js (версия lts) если нет, скачайте его с nodejs org https //nodejs org/ создайте ваш проект sveltekit, выполнив npx sv create todo app когда появится запрос, выберите параметры sveltekit, которые лучше всего подходят для вашего проекта (например, скелетный проект, typescript, если это необходимо) перейдите в каталог вашего проекта cd todo app запустите сервер разработки, чтобы проверить настройку npm run dev ваше приложение sveltekit теперь должно открываться в вашем браузере с фронтендом готовым, продолжайте создавать свой бэкенд на back4app создание бэкенда todo back4app предлагает полностью управляемый бэкенд сервис на базе parse он включает в себя nosql базу данных, аутентификацию, cloud code и автоматически сгенерированные api следуйте этим шагам, чтобы настроить ваш бэкенд войдите в вашу панель управления back4app https //www back4app com/ и нажмите "создать новое приложение " назовите ваше приложение (например, todoapp ) и выберите nodejs/parse в качестве типа бэкенда перейдите в "база данных" > "обозреватель" , нажмите "создать класс" , и выберите "пользовательский" назовите класс task и настройте его для публичного чтения и записи (вы можете уточнить эти разрешения позже) в классе task добавьте следующие поля title (string) – название задачи description (string) – подробности о задаче completed (boolean) – статус выполнения задачи duedate (date) – срок выполнения задачи нажмите "сохранить" для создания схемы интеграция back4app с sveltekit вы будете использовать parse javascript sdk для подключения вашего приложения sveltekit к бэкенду back4app установите parse sdk npm install parse настройте sdk, отредактировав src/app html или создав специальный модуль (например, src/lib/parseclient js ) например, создайте src/lib/parseclient js со следующим содержимым import parse from 'parse/dist/parse min js'; const parse app id = 'your application id'; const parse js key = 'your javascript key'; const parse server url = 'https //parseapi back4app com/'; parse initialize(parse app id, parse js key); parse serverurl = parse server url; export default parse; теперь вы можете импортировать этот модуль в ваши маршруты или компоненты sveltekit для взаимодействия с back4app разработка фронтенда ваше приложение sveltekit будет состоять из маршрутов и компонентов для добавления, отображения, обновления и удаления задач используйте файловую маршрутизацию sveltekit и реактивные переменные для динамических обновлений структурирование ваших компонентов создайте src/lib/components папку для организации ваших компонентов mkdir p src/lib/components вы создадите следующие компоненты taskform svelte – для добавления новых задач tasklist svelte – для отображения списка задач taskitem svelte – для представления отдельных задач taskform svelte этот компонент отображает форму, которая захватывает детали задачи и отправляет их в back4app \<script> import { createeventdispatcher } from 'svelte'; import parse from '$lib/parseclient'; let title = ''; let description = ''; const dispatch = createeventdispatcher(); async function handlesubmit(event) { event preventdefault(); try { const task = parse object extend('task'); const task = new task(); task set('title', title); task set('description', description); task set('completed', false); await task save(); dispatch('refresh'); title = ''; description = ''; } catch (error) { console error('error adding task ', error); } } \</script> \<form on\ submit|preventdefault={handlesubmit}> \<input type="text" placeholder="task title" bind\ value={title} required /> \<input type="text" placeholder="description" bind\ value={description} required /> \<button type="submit">add task\</button> \</form> taskitem svelte этот компонент представляет собой отдельную задачу, с кнопками для переключения ее статуса выполнения или удаления задачи \<script> import parse from '$lib/parseclient'; export let task; export let refresh; async function togglecomplete() { try { const query = new parse query('task'); const tasktoupdate = await query get(task id); tasktoupdate set('completed', !task completed); await tasktoupdate save(); refresh(); } catch (error) { console error('error updating task ', error); } } async function deletetask() { try { const query = new parse query('task'); const tasktodelete = await query get(task id); await tasktodelete destroy(); refresh(); } catch (error) { console error('error deleting task ', error); } } \</script> \<div class="task item {task completed ? 'completed' ''}"> \<div> \<h3>{task title}\</h3> \<p>{task description}\</p> \</div> \<div> \<button on\ click={togglecomplete}> {task completed ? 'undo' 'complete'} \</button> \<button on\ click={deletetask}>delete\</button> \</div> \</div> tasklist svelte этот компонент отображает все задачи, перебирая массив и рендеря каждую задачу с помощью компонента taskitem \<script> import taskitem from '$lib/components/taskitem svelte'; export let tasks = \[]; export let refresh; \</script> {#if tasks length === 0} \<p>no tasks available\</p> {\ else} {#each tasks as task (task id)} \<taskitem {task} {refresh} /> {/each} {/if} +page svelte (основной маршрут) в вашем основном маршруте sveltekit (например, src/routes/+page svelte ), управляйте состоянием задач и интегрируйте компоненты \<script> import { onmount } from 'svelte'; import parse from '$lib/parseclient'; import taskform from '$lib/components/taskform svelte'; import tasklist from '$lib/components/tasklist svelte'; let tasks = \[]; async function fetchtasks() { try { const task = parse object extend('task'); const query = new parse query(task); const results = await query find(); tasks = results map(task => ({ id task id, task tojson() })); } catch (error) { console error('error fetching tasks ', error); } } onmount(fetchtasks); \</script> \<div class="container"> \<h1>to do list\</h1> \<taskform on\ refresh={fetchtasks} /> \<tasklist {tasks} refresh={fetchtasks} /> \</div> стилизация приложения создайте глобальный файл стилей (например, src/app css ) для добавления базового стиля container { max width 600px; margin 40px auto; padding 0 20px; text align center; font family sans serif; } container h1 { margin bottom 20px; } form { display flex; flex direction column; align items center; gap 10px; margin bottom 20px; } form input\[type="text"] { width 80%; max width 400px; padding 8px; box sizing border box; font size 1rem; } form button { padding 8px 16px; cursor pointer; font size 1rem; border none; background color #eaeaea; transition background color 0 2s ease; } form button\ hover { background color #ccc; } task item { display flex; flex direction column; align items center; justify content center; gap 12px; border 1px solid #ccc; border radius 6px; padding 15px; margin 10px 0; background color #fafafa; text align center; transition background color 0 2s ease; } task item completed h3, task item completed p { text decoration line through; color #888; } task item h3 { margin 0; font size 1 1rem; } task item p { margin 0; font size 1rem; } task item button { padding 6px 12px; border none; background color #eaeaea; cursor pointer; font size 0 9rem; } task item button\ hover { background color #ccc; } @media (min width 600px) { task item { flex direction row; } } импортируйте этот файл стилей в ваш src/app html или основной файл макета развертывание фронтенда на back4app web deployment back4app web deployment предоставляет контейнеризированную среду для размещения вашего приложения sveltekit настройка vite для продакшена обновите ваш vite config js при необходимости, чтобы установить базовый путь для контейнеризированной среды import { sveltekit } from '@sveltejs/kit/vite'; import { defineconfig } from 'vite'; export default defineconfig({ plugins \[sveltekit()], base ' /', }); сгенерируйте сборку для продакшена npm run build создание dockerfile прежде чем вы сможете протестировать ваш docker контейнер локально, вам нужно установить adapter node который собирает ваш сайт для node js для этого выполните команду в вашем терминале npm i d @sveltejs/adapter node после установки adapter node , откройте файл svelte config js и замените код там на следующий блок кода import adapter from '@sveltejs/adapter node'; / @type {import('@sveltejs/kit') config} / const config = { 	kit { 	 // adapter auto only supports some environments, see https //svelte dev/docs/kit/adapter auto for a list 	 // if your environment is not supported, or you settled on a specific environment, switch out the adapter 	 // see https //svelte dev/docs/kit/adapters for more information about adapters 	 adapter adapter() 	} }; export default config; теперь создайте dockerfile в корне вашего проекта со следующим содержимым from node 22 alpine as builder workdir /app copy package json / run npm ci copy run npm run build run npm prune production from node 22 alpine workdir /app copy from=builder /app/build build/ copy from=builder /app/node modules node modules/ copy package json expose 3000 env node env=production cmd \[ "node", "build" ] тестирование docker контейнера локально соберите ваш docker образ docker build t todo frontend запустите контейнер docker run p 3000 3000 todo frontend откройте http //localhost 3000 в вашем браузере, чтобы убедиться, что ваше приложение sveltekit работает корректно развертывание на back4app инициализируйте репозиторий git, добавьте файлы вашего проекта и сделайте коммит git init git add git commit m "initial commit for back4app deployment" git branch m main git remote add origin \<your github repository url> git push u origin main войдите в back4app web deployment https //www back4app com/containers нажмите "создать новое приложение" , укажите имя вашего проекта и выберите ваш репозиторий github авторизуйте back4app и выберите dockerfile deployment подтвердите настройки сборки и нажмите "развернуть" , чтобы начать процесс развертывания мониторинг вашего развертывания после развертывания используйте панель управления back4app для просмотра логов для отладки мониторинга производительности контейнера и использования ресурсов запуска сборок при новых коммитах настройки пользовательских доменов при необходимости получите доступ к вашему живому приложению по адресу https //todoapp ku5ofg8s b4a run/ https //todoapp ku5ofg8s b4a run/ https //todoapp ku5ofg8s b4a run/ тестирование и отладка после развертывания подтвердите, что ваш фронтенд sveltekit правильно взаимодействует с бэкендом back4app проверка api используйте инструменты разработчика вашего браузера (f12 → сеть), чтобы проверить вызовы api операции с задачами добавляйте, завершайте и удаляйте задачи через интерфейс и проверяйте обновления в браузере базы данных back4app обработка ошибок проверьте журналы консоли на наличие ошибок и протестируйте крайние случаи, такие как отправка пустых задач тестирование производительности симулируйте медленные сетевые условия с помощью инструментов браузера, чтобы оценить отзывчивость лучшие практики использования back4app с sveltekit чтобы оптимизировать ваше приложение эффективные запросы используйте пакетные операции при обработке нескольких задач const tasks = \[task1, task2, task3]; parse object saveall(tasks); оптимизированные запросы извлекайте только необходимые поля query select('title', 'completed'); управление окружением храните чувствительные ключи в переменных окружения vite parse app id=your app id vite parse js key=your js key безопасность используйте acl для ограничения доступа task setacl(new parse acl(parse user current())); снижение нагрузки на сервер используйте cloud code для сложной логики, чтобы уменьшить воздействие api заключение теперь вы создали полнофункциональное приложение to do list, создав фронтенд на sveltekit, интегрировав его с бэкендом back4app и развернув его с помощью контейнеризованных рабочих процессов этот учебник провел вас через каждый шаг — от локальной разработки до облачного развертывания — обеспечивая плавное взаимодействие между вашим интерфейсом sveltekit и бэкенд сервисами смотрим в будущее, рассмотрите улучшения, такие как обновления в реальном времени, улучшенная аутентификация и интеграции с третьими сторонами для дальнейшего обучения посетите документацию back4app https //www back4app com/docs и изучите ресурсы сообщества