Quickstarters
Как построить фронтенд на Svelte и подключить его к бэкенду?
34 мин
в этом учебном пособии вы создадите приложение список дел, используя svelte, и подключите его к управляемому бэкенд сервису на базе back4app этот гид предназначен для вас, если вы хотите освоить основные операции crud (создание, чтение, обновление, удаление) и создать интуитивно понятный интерфейс с помощью svelte к концу вашего приложения будет безупречно взаимодействовать с бэкендом, который обрабатывает хранение данных, аутентификацию и многое другое разработка полнофункционального приложения может быть сложной из за конфигурации бэкенда и управления базами данных чтобы упростить вашу работу, мы используем back4app — надежный бэкенд как услуга — так вы сможете сосредоточиться на создании динамичного фронтенда на svelte back4app предоставляет полностью управляемую nosql базу данных, аутентификацию, cloud code для пользовательской логики и sdk для плавной интеграции это позволяет вам разрабатывать масштабируемые приложения без управления серверной инфраструктурой основные выводы следуя этому учебному пособию, вы инициализируйте современный проект svelte с vite бесшовно интегрируйте бэкенд сервис для управления данными вашего приложения реализуйте основные операции crud для динамичного списка дел разверните ваше полностью функциональное приложение, используя контейнеризованные рабочие процессы на back4app предварительные требования перед тем как начать, убедитесь, что у вас есть node js и npm установлены на вашем компьютере проверьте с помощью node v и npm v базовые знания svelte , включая компоненты, реактивные переменные и обработку событий аккаунт back4app для управления вашими бэкенд сервисами зарегистрируйтесь на back4app https //www back4app com/ если у вас его еще нет с этими предварительными требованиями вы готовы начать создание вашего проекта настройка проекта начните с настройки вашей локальной среды разработки и инициализации нового проекта svelte с использованием vite убедитесь, что у вас установлен node js (lts версия) если нет, скачайте его с nodejs org https //nodejs org/ создайте ваш проект svelte, выполнив npm create vite\@latest todo app template svelte перейдите в каталог вашего проекта cd todo app установите необходимые зависимости npm install запустите сервер разработки, чтобы проверить настройку npm run dev откройте предоставленный url в вашем браузере, чтобы увидеть ваше приложение svelte в действии с готовым фронтендом переходите к созданию вашего бэкенда на back4app создание бэкенда todo back4app предлагает полностью управляемый бэкенд сервис на базе parse он включает в себя nosql базу данных, аутентификацию, cloud code и автоматически сгенерированные api следуйте этим шагам, чтобы настроить ваш бэкенд войдите в вашу панель управления back4app https //www back4app com/ и нажмите "создать новое приложение " назовите ваше приложение (например, todoapp ) и выберите nodejs/parse в качестве типа бэкенда перейдите в "база данных" > "браузер" , нажмите "создать класс" , и выберите "пользовательский" назовите класс task и установите разрешения для публичного чтения и записи (вы можете уточнить их позже) в классе task добавьте следующие поля title (строка) – заголовок задачи description (строка) – подробности о задаче completed (булевый) – статус выполнения задачи duedate (дата) – срок выполнения задачи нажмите "сохранить" для создания схемы интеграция back4app с svelte чтобы подключить ваше приложение svelte к back4app, вы будете использовать parse javascript sdk установите parse sdk npm install parse настройте sdk, отредактировав файл src/main js импортируйте sdk и инициализируйте его с вашим application id и javascript key из панели управления back4app (найдите их в разделе app settings > security & keys ) import app from ' /app svelte'; 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; const app = new app({ target document getelementbyid('app') }); export default app; с подключенным бэкендом вы теперь можете создать интерфейс списка задач и реализовать операции crud разработка фронтенда ваше приложение svelte будет состоять из компонентов, которые позволят вам добавлять, отображать, обновлять и удалять задачи вы будете использовать реактивность svelte для динамических обновлений структурирование ваших компонентов создайте папку components внутри src для организации ваших компонентов svelte mkdir src/components вы создадите следующие компоненты taskform svelte – для добавления новых задач tasklist svelte – для отображения списка задач taskitem svelte – для представления отдельных задач taskform svelte этот компонент отображает форму, которая захватывает детали задачи и отправляет их в back4app \<script> import { createeventdispatcher } from 'svelte'; import parse from 'parse/dist/parse min js'; 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 'parse/dist/parse min js'; 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 ' /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} app svelte в вашем основном компоненте управляйте состоянием приложения и интегрируйте свои компоненты задач \<script> import { onmount } from 'svelte'; import parse from 'parse/dist/parse min js'; import taskform from ' /components/taskform svelte'; import tasklist from ' /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/global 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/main js import ' /global css'; развертывание фронтенда на back4app web deployment back4app web deployment предлагает контейнеризированную среду для размещения вашего svelte приложения настройка vite для продакшена отрегулируйте vite config js при необходимости, чтобы правильно установить базовый путь для контейнеризированной среды import { defineconfig } from 'vite'; import { svelte } from '@sveltejs/vite plugin svelte'; export default defineconfig({ plugins \[svelte()], base ' /', }); сгенерируйте сборку для продакшена npm run build создание dockerfile создайте dockerfile в корневом каталоге со следующим содержимым \# stage 1 build the svelte app from node 18 alpine as build workdir /app copy package json package lock json / run npm install copy run npm run build \# stage 2 serve the app using nginx from nginx\ alpine copy from=build /app/dist /usr/share/nginx/html expose 80 cmd \["nginx", " g", "daemon off;"] тестирование контейнера docker локально соберите свой образ docker docker build t todo frontend запустите контейнер docker run p 8080 80 todo frontend откройте http //localhost 8080 в вашем браузере, чтобы убедиться, что ваше приложение svelte обслуживается правильно развертывание на 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 подтвердите настройки сборки и нажмите "развернуть" для начала первой сборки мониторинг вашего развертывания после развертывания используйте панель управления back4app для просмотра логов для отладки мониторинга производительности контейнера и использования ресурсов запуска сборок при новых коммитах настройки пользовательских доменов при необходимости получите доступ к вашему живому приложению по адресу https //todoapp ku5ofg8s b4a run/ https //todoapp ku5ofg8s b4a run/ https //todoapp ku5ofg8s b4a run/ тестирование и отладка после развертывания подтвердите, что ваш фронтенд на svelte правильно взаимодействует с бэкендом back4app проверка api используйте инструменты разработчика вашего браузера (f12 → сеть), чтобы проверить вызовы api операции с задачами добавляйте, завершайте и удаляйте задачи через интерфейс и проверяйте обновления в браузере базы данных back4app обработка ошибок проверяйте журналы консоли на наличие ошибок и тестируйте крайние случаи, такие как отправка пустых задач тестирование производительности симулируйте медленные сетевые условия с помощью инструментов браузера, чтобы оценить отзывчивость лучшие практики использования back4app с svelte чтобы оптимизировать ваше приложение эффективные запросы используйте пакетные операции при обработке нескольких задач const tasks = \[task1, task2, task3]; parse object saveall(tasks); оптимизированные запросы извлекайте только необходимые поля query select('title', 'completed'); переменные окружения храните конфиденциальные ключи в файле env 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, создав фронтенд на svelte, интегрировав его с бэкендом back4app и развернув его с помощью контейнеризованных рабочих процессов этот учебник провел вас через каждый шаг — от локальной разработки до облачного развертывания — обеспечивая плавное взаимодействие между вашим интерфейсом svelte и бэкенд сервисами смотрим в будущее, подумайте о том, чтобы улучшить ваше приложение с помощью обновлений в реальном времени, улучшенной аутентификации и интеграции с третьими сторонами для дальнейшего обучения посетите документацию back4app https //www back4app com/docs и изучите ресурсы сообщества