Quickstarters
Как создать frontend на Redwood.js и подключить его к backend?
22 мин
в этом учебном пособии вы создадите приложение список дел, используя redwood js, и подключите его к управляемой серверной части на back4app этот практический гид проведет вас через каждый шаг — от настройки вашего проекта redwood js до интеграции parse для связи с сервером — чтобы вы могли сосредоточиться на создании динамичного и отзывчивого пользовательского интерфейса redwood js разработан для упрощения разработки полного стека, сочетая современный фронтенд на основе react с надежной архитектурой бэкенда в этом учебном пособии вы будете использовать back4app для управления вашими серверными услугами, что позволит вам выполнять основные операции crud без необходимости управлять серверной инфраструктурой основные выводы к концу этого руководства вы сможете инициализировать современный проект redwood js с инструментами, соответствующими отраслевым стандартам подключить ваш фронтенд на redwood js к бэкенду back4app с использованием parse javascript sdk реализовать операции crud для управления вашим списком дел контейнеризировать ваше приложение на redwood js и развернуть его через веб развертывание back4app предварительные требования перед тем как начать, убедитесь, что у вас есть следующее node js и npm/yarn установлены на вашем компьютере проверьте установку с помощью node v и npm v или yarn v базовые знания redwood js , включая структуру проекта, маршрутизацию и компоненты знание концепций react будет полезным аккаунт на back4app для настройки и управления вашими серверными услугами зарегистрируйтесь на back4app https //www back4app com/ при необходимости с этими предварительными требованиями вы готовы настроить ваш проект redwood js и подключить его к масштабируемой серверной части настройка проекта начните с создания нового приложения redwood js откройте терминал и выполните следующую команду, заменив todo app на желаемое имя проекта yarn create redwood app todo app перейдите в каталог вашего проекта cd todo app установите все зависимости yarn install запустите сервер разработки, чтобы убедиться, что ваш проект настроен правильно yarn rw dev перейдите по url, отображаемому в вашем терминале, чтобы подтвердить, что ваше приложение redwood js работает настройка бэкенда todo на back4app back4app предоставляет управляемый бэкенд parse, который упрощает обработку данных для вашего приложения в этом разделе вы создадите модель данных для хранения задач вашего списка дел создание вашего бэкенд приложения войдите в ваш дашборд back4app https //www back4app com/ и нажмите "создать новое приложение " назовите ваше приложение (например, todoredwoodapp ) и выберите nodejs/parse в качестве типа бэкенда в разделе "база данных" > "обозреватель" нажмите "создать класс" и выберите "пользовательский " назовите класс task и установите его разрешения на уровне класса, чтобы разрешить публичное чтение и запись (при необходимости измените эти настройки позже) добавьте следующие поля в класс task title (строка) – название задачи description (строка) – подробности о задаче completed (булевый) – завершена ли задача duedate (дата) – срок выполнения задачи нажмите "сохранить" для завершения схемы интеграция back4app с redwood js чтобы подключить ваше приложение redwood js к back4app, установите parse javascript sdk yarn add parse затем настройте parse, создав новый файл в web/src директории назовите его parseclient js и добавьте следующий код замените 'your application id' и 'your javascript key' на ваши учетные данные из панели управления back4app (в разделе настройки приложения > безопасность и ключи ) // web/src/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 эта конфигурация позволяет вам вызывать методы parse из любого компонента redwood js создание интерфейса фронтенда с помощью redwood js с подключенным бэкендом пришло время создать интерфейс списка дел в redwood js страницы размещаются в web/src/pages директории создание страницы todo создайте новую папку с именем todopage в web/src/pages и добавьте файл с именем todopage jsx mkdir p web/src/pages/todopage touch web/src/pages/todopage/todopage jsx откройте web/src/pages/todopage/todopage jsx и добавьте следующий код // web/src/pages/todopage/todopage jsx import { usestate, useeffect } from 'react' import parse from 'src/parseclient' const todopage = () => { const \[tasks, settasks] = usestate(\[]) const \[title, settitle] = usestate('') const \[description, setdescription] = usestate('') useeffect(() => { fetchtasks() }, \[]) const fetchtasks = async () => { try { const task = parse object extend('task') const query = new parse query(task) const results = await query find() settasks(results map((task) => ({ id task id, task tojson() }))) } catch (error) { console error('error fetching tasks ', error) } } const addtask = async (e) => { e 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() settitle('') setdescription('') fetchtasks() } catch (error) { console error('error adding task ', error) } } const toggletask = async (id, currentstatus) => { try { const task = parse object extend('task') const query = new parse query(task) const task = await query get(id) task set('completed', !currentstatus) await task save() fetchtasks() } catch (error) { console error('error toggling task ', error) } } const deletetask = async (id) => { try { const task = parse object extend('task') const query = new parse query(task) const task = await query get(id) await task destroy() fetchtasks() } catch (error) { console error('error deleting task ', error) } } return ( \<div classname="container"> \<h1>to do list\</h1> \<form onsubmit={addtask} classname="form"> \<input type="text" placeholder="task title" value={title} onchange={(e) => settitle(e target value)} required /> \<input type="text" placeholder="description" value={description} onchange={(e) => setdescription(e target value)} required /> \<button type="submit">add task\</button> \</form> \<div classname="tasks"> {tasks length === 0 ? ( \<p>no tasks available\</p> ) ( tasks map((task) => ( \<div key={task id} classname={`task item ${task completed ? 'completed' ''}`} \> \<h3>{task title}\</h3> \<p>{task description}\</p> \<button onclick={() => toggletask(task id, task completed)}> {task completed ? 'undo' 'complete'} \</button> \<button onclick={() => deletetask(task id)}>delete\</button> \</div> )) )} \</div> \</div> ) } export default todopage настройка маршрутов чтобы сделать вашу страницу todo доступной, откройте файл routes jsx , расположенный в web/src/routes jsx и добавьте новый маршрут // web/src/routes jsx import todopage from 'src/pages/todopage/todopage' const routes = () => { return ( \<router> \<route path="/" page={todopage} name="todo" /> \<route notfound page={notfoundpage} /> \</router> ); }; export default routes; добавление глобальных стилей чтобы добавить глобальные стили, добавьте приведенные ниже css стили в файл css с именем index css в папке web/src / web/src/index 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; 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; } tasks p { font size 1rem; } task item { display flex; flex direction column; align items 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; } } ваше приложение redwood js теперь имеет функциональный интерфейс списка дел, который взаимодействует с бэкендом back4app контейнеризация и развертывание вашего приложения redwood js на back4app развертывание в back4app предлагает контейнеризированную среду, которая упрощает развертывание приложений в этом разделе вы упакуете ваше приложение redwood js в контейнер docker и развернете его подготовка вашего приложения к производству сначала соберите ваше приложение redwood js для продакшена yarn rw build web создание dockerfile чтобы настроить docker для вашего проекта redwood js, вам нужно выполнить команду настройки docker в вашем терминале yarn rw setup docker команды настройки выполняют несколько задач создаются четыре файла dockerfile, dockerignore, docker compose dev yml и docker compose prod yml добавляется пакет @redwoodjs/api server на стороне api и пакет @redwoodjs/web server на стороне web обновляется настройка browser open в redwood toml если эта настройка останется истинной, это приведет к сбою сервера разработки при запуске docker compose dev yml команда предоставляет dockerfile, который собирает ваше приложение redwood js и подготавливает образ для продакшена, используя минимальную среду выполнения node js вы можете запустить файл dev compose с помощью docker compose f /docker compose dev yml up откройте http //localhost 8390 в вашем браузере, чтобы убедиться, что ваше приложение redwood js работает правильно развертывание через back4app web deployment загрузите ваш проект на github 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 repository и авторизуйте back4app выберите ваш todo redwood репозиторий выберите dockerfile deployment и проверьте настройки сборки нажмите "развернуть" для начала процесса развертывания после развертывания используйте панель управления back4app для мониторинга журналов, управления сборками и настройки пользовательских доменов, если это необходимо тестирование и отладка вашего приложения после развертывания убедитесь, что ваше приложение работает как ожидалось подключение api используйте инструменты разработчика браузера, чтобы проверить, что запросы api на добавление, переключение и удаление задач успешны сохранение данных добавьте задачи через интерфейс и обновите страницу, чтобы подтвердить, что задачи сохраняются в базе данных back4app операции crud проверьте переключение и удаление задач, проверяя наличие ошибок в консоли или журналах api краевые случаи убедитесь, что проверки ввода предотвращают пустые отправки лучшие практики и советы по оптимизации для безопасного и эффективного приложения рассмотрите следующее оптимизация запросов api используйте пакетную обработку и извлекайте только необходимые поля переменные окружения защитите конфиденциальные учетные данные (id приложения и ключ javascript) с помощью переменных окружения контроль доступа реализуйте динамические acl, чтобы только авторизованные пользователи могли изменять данные облачный код перенесите сложную логику в облачный код back4app для улучшения производительности и безопасности заключение теперь вы создали полнофункциональное приложение to do list, используя redwood js, интегрированное с бэкендом back4app этот учебник охватывает все, от инициализации проекта и интеграции бэкенда до контейнерного развертывания продолжая разработку, подумайте о добавлении таких функций, как расширенное управление пользователями, обновления в реальном времени и интеграции с третьими сторонами для получения дополнительной информации изучите документацию back4app https //www back4app com/docs и ресурсы redwood js