Quickstarters
Как создать фронтенд на Nuxt.js и подключить его к бэкенду?
35 мин
в этом руководстве вы создадите приложение список дел, используя nuxt js, и подключите его к управляемому бэкенд сервису на базе back4app этот гид предназначен для вас, если вы хотите освоить основные операции crud (создание, чтение, обновление, удаление) и создать динамичный, отзывчивый интерфейс с использованием nuxt js к концу этого руководства ваше приложение будет без проблем взаимодействовать с бэкендом, который управляет хранением данных, аутентификацией и многим другим разработка полнофункционального приложения может быть сложной задачей из за настройки бэкенда и управления базами данных чтобы упростить ваш процесс, мы используем back4app— мощный бэкенд как услуга —что позволяет вам сосредоточиться на разработке функционального фронтенда на nuxt js back4app предоставляет полностью управляемую nosql базу данных, аутентификацию пользователей, cloud code для пользовательской логики и sdk для легкой интеграции это позволяет вам создавать и развертывать масштабируемые приложения без необходимости управлять серверной инфраструктурой основные выводы следуя этому руководству, вы инициализируйте современный проект nuxt js с помощью nuxt cli интегрируйте бэкенд сервис для обработки данных вашего приложения реализуйте основные операции crud для динамичного списка дел разверните ваше полностью функциональное приложение, используя контейнеризованные рабочие процессы на back4app предварительные требования перед тем как начать, убедитесь, что у вас есть node js и npm установлены на вашем компьютере подтвердите установки с помощью node v и npm v базовые знания nuxt js , включая компоненты, страницы и асинхронную загрузку данных аккаунт back4app для управления вашими бэкенд сервисами зарегистрируйтесь на back4app https //www back4app com/ если вы еще этого не сделали с этими предварительными требованиями вы готовы начать создание вашего проекта настройка проекта начните с настройки вашей локальной среды разработки и инициализации нового проекта nuxt js убедитесь, что у вас установлен node js (версия lts) если нет, скачайте его с nodejs org https //nodejs org/ создайте ваш проект nuxt js с помощью nuxt cli npx nuxi init todo app перейдите в каталог вашего проекта cd todo app установите необходимые зависимости npm install запустите сервер разработки, чтобы проверить настройку npm run dev откройте предоставленный url в вашем браузере, чтобы увидеть ваше приложение nuxt js в действии с вашим фронтендом готовым, переходите к созданию вашего бэкенда на back4app создание бэкенда todo back4app предлагает полностью управляемый бэкенд сервис на базе parse , который включает в себя nosql базу данных, аутентификацию, cloud code и автоматически сгенерированные api следуйте этим шагам, чтобы настроить ваш бэкенд войдите в вашу панель управления back4app https //www back4app com/ и нажмите "создать новое приложение " назовите ваше приложение (например, todoapp ) и выберите nodejs/parse в качестве типа бэкенда перейдите в "база данных" > "обозреватель" , нажмите "создать класс" , и выберите "пользовательский" назовите класс task и установите его разрешения для публичного чтения и записи (вы можете уточнить эти настройки позже) в классе task добавьте следующие поля title (строка) – заголовок задачи description (строка) – подробности о задаче completed (булевый) – статус выполнения задачи duedate (дата) – срок выполнения задачи нажмите "сохранить" для создания схемы интеграция back4app с nuxt js вы будете использовать parse javascript sdk для подключения вашего приложения nuxt js к бэкенду back4app установите parse sdk npm install parse настройте sdk, создав специальный модуль например, создайте plugins/parse client 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; затем зарегистрируйте этот плагин в вашем nuxt config ts (или nuxt config js ) export default { plugins \[ { src ' /plugins/parse client js', mode 'client' } ] } теперь вы можете импортировать parse в ваши страницы или компоненты для взаимодействия с бэкендом разработка фронтенда ваше приложение nuxt js будет состоять из страниц и компонентов для добавления, отображения, обновления и удаления задач используйте маршрутизацию на основе файлов и асинхронное извлечение данных nuxt для создания динамического списка задач структурирование ваших компонентов создайте components папку в вашем проекте для организации ваших ui компонентов mkdir components вы создадите следующие компоненты taskform vue – для добавления новых задач tasklist vue – для отображения списка задач taskitem vue – для представления отдельных задач taskform vue этот компонент отображает форму, которая захватывает детали задачи и отправляет их в back4app \<template> \<form @submit prevent="handlesubmit"> \<input type="text" placeholder="task title" v model="title" required /> \<input type="text" placeholder="description" v model="description" required /> \<button type="submit">add task\</button> \</form> \</template> \<script> import parse from 'parse/dist/parse min js'; export default { name 'taskform', data() { return { title '', description '' }; }, methods { async handlesubmit() { try { const task = parse object extend('task'); const task = new task(); task set('title', this title); task set('description', this description); task set('completed', false); await task save(); this $emit('refresh'); this title = ''; this description = ''; } catch (error) { console error('error adding task ', error); } } } }; \</script> taskitem vue этот компонент представляет собой отдельную задачу и предоставляет кнопки для переключения статуса выполнения или удаления задачи \<template> \<div \ class="\['task item', { completed task completed }]"> \<div> \<h3>{{ task title }}\</h3> \<p>{{ task description }}\</p> \</div> \<div> \<button @click="togglecomplete"> {{ task completed ? 'undo' 'complete' }} \</button> \<button @click="deletetask">delete\</button> \</div> \</div> \</template> \<script> import parse from 'parse/dist/parse min js'; export default { name 'taskitem', props \['task'], methods { async togglecomplete() { try { const query = new parse query('task'); const tasktoupdate = await query get(this task id); tasktoupdate set('completed', !this task completed); await tasktoupdate save(); this $emit('refresh'); } catch (error) { console error('error updating task ', error); } }, async deletetask() { try { const query = new parse query('task'); const tasktodelete = await query get(this task id); await tasktodelete destroy(); this $emit('refresh'); } catch (error) { console error('error deleting task ', error); } } } }; \</script> tasklist vue этот компонент отображает список задач, перебирая массив и рендеря каждую задачу с помощью компонента taskitem \<template> \<div> \<p v if="tasks length === 0">no tasks available\</p> \<taskitem v for="task in tasks" \ key="task id" \ task="task" @refresh="refreshtasks" /> \</div> \</template> \<script> import taskitem from ' /taskitem vue'; export default { name 'tasklist', props \['tasks'], methods { refreshtasks() { this $emit('refresh'); } }, components { taskitem } }; \</script> интеграция страницы на вашей главной странице (например, pages/index vue ), управляйте состоянием задач и интегрируйте ваши компоненты \<template> \<div class="container"> \<h1>to do list\</h1> \<taskform @refresh="fetchtasks" /> \<tasklist \ tasks="tasks" @refresh="fetchtasks" /> \</div> \</template> \<script> import taskform from ' /components/taskform vue'; import tasklist from ' /components/tasklist vue'; import parse from 'parse/dist/parse min js'; export default { components { taskform, tasklist }, data() { return { tasks \[] }; }, methods { async fetchtasks() { try { const task = parse object extend("task"); const query = new parse query(task); const results = await query find(); this tasks = results map((task) => ({ id task id, task tojson() })); } catch (error) { console error("error fetching tasks ", error); } }, }, mounted() { this fetchtasks(); } }; \</script> стилизация приложения создайте глобальный файл стилей (например, assets/css/main css ), чтобы добавить базовую стилизацию container { max width 600px; margin 40px auto; padding 0 20px; text align center; font family sans serif; } 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; } } включите этот файл стилей в вашу конфигурацию nuxt, добавив его в массив css в nuxt config ts export default { css \[' /assets/css/main css'] } развертывание фронтенда на back4app web deployment back4app web deployment предлагает контейнеризированную среду для размещения вашего приложения nuxt js настройка nuxt js для продакшена обновите ваш nuxt config ts при необходимости, чтобы установить базовый путь для развертывания export default { router { base ' /' } } сгенерируйте производственную сборку npm run build npm run generate создание dockerfile создайте dockerfile в корне вашего проекта со следующим содержимым # stage 1 build the nuxt js app from node 18 alpine as build workdir /app copy package json package lock json / run npm install copy run npm run build run npm run generate \# 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 в вашем браузере, чтобы убедиться, что ваше приложение nuxt js обслуживается правильно развертывание на 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/ тестирование и отладка после развертывания подтвердите, что ваш фронтенд на nuxt js правильно взаимодействует с бэкендом back4app проверка api используйте инструменты разработчика вашего браузера (f12 → сеть), чтобы проверить вызовы api операции с задачами добавляйте, завершайте и удаляйте задачи через интерфейс и проверяйте обновления в браузере базы данных back4app обработка ошибок проверяйте журналы консоли на наличие ошибок и тестируйте крайние случаи, такие как пустые отправки тестирование производительности симулируйте медленные сетевые условия с помощью инструментов браузера, чтобы оценить отзывчивость лучшие практики использования back4app с nuxt js чтобы оптимизировать ваше приложение эффективные запросы используйте пакетные операции для обработки нескольких задач const tasks = \[task1, task2, task3]; parse object saveall(tasks); оптимизированные запросы извлекайте только необходимые поля query select('title', 'completed'); управление окружением храните чувствительные ключи в переменных окружения nuxt public parse app id=your app id nuxt public parse js key=your js key безопасность используйте acl для ограничения доступа task setacl(new parse acl(parse user current())); перенос нагрузки на сервер используйте cloud code для сложной логики, чтобы уменьшить воздействие api заключение теперь вы создали полнофункциональное приложение to do list, создав фронтенд на nuxt js, интегрировав его с бэкендом back4app и развернув его с помощью контейнеризованных рабочих процессов этот учебник провел вас через каждый шаг — от локальной разработки до облачного развертывания — обеспечивая бесшовное взаимодействие между вашим интерфейсом nuxt js и бэкенд сервисами смотрим в будущее, рассмотрите улучшения, такие как обновления в реальном времени, улучшенная аутентификация и интеграция с третьими сторонами для дальнейшего обучения посетите документация back4app https //www back4app com/docs и изучите ресурсы сообщества