ChatGPT на русском языке, бесплатноНовости и обновления в Telegram
На sponsr есть решения ваших задач
Полезные видео о фронтенде. Подпишись на Rutube
JavaScript: события CustomEvent и метод dispatchEvent
2 года назад·1 мин. на чтение
В этой статье рассмотрим как создавать события Event и CustomEvent и отправлять их при помощи метода dispatchEvent(). Также рассмотрим сценарии использования кастомных событий в проектах.
События играют важную роль в web приложениях. С их помощью различные компоненты могут общаться друг с другом. Также они необходимы при реализации микрофронтенд архитектуры.
Конструктор
Создать событие с помощью конструктора
Конструктор
При помощи
Как создать кастомное событие?
Есть несколько способов создать кастомное событие:- при помощи конструктора
Event
, - при помощи конструктора
CustomEvent
(предпочтительно)
CustomEvent
.
Конструктор Event
Создать событие с помощью конструктора Event
можно следующим образом:
Имена событий не чувствительны к регистру (const event = new Event('ADD_NOTIFICATION');
ADD_NOTIFICATION
, add_notification
будут восприниматься как одно и то же событие).
Конструктор CustomEvent
При помощи CustomEvent
можно передавать дополнительные данные. Для этого нужно добавить их в поле detail
.
const event = new CustomEvent('ADD_NOTIFICATION', { detail: { type: 'message', payload: 'Привет' } });
Отправка событий
Событие создано, теперь нужно его отправить. Для отправки используется методdispatchEvent()
. Он принимает параметр event
.
Также в приложении есть код, который прослушивает это событие.// event - объект, созданный выше window.dispatchEvent(event);
const handleAddNotification = (event) => { // ... } window.addEventListener('ADD_NOTIFICATION', handleAddNotification);
Где можно использовать кастомные события
Микрофронтенд приложения. В отличие от монолита, микрофронтенд архитектура предполагает наличие несколько изолированных частей приложения, которые используются вместе. Эти части могут быть написаны на разных фреймворках. Для того, чтобы эти части могли обмениваться между собой данными нужен слой для общения.CustomEvent
- это нативное решение, не зависящее от фреймворка, отлично подходит для этих целей.Node JS и React - как создать фулстек приложение. Полное руководство
2 года назад·3 мин. на чтение
React приложение и бэкенд на NodeJS это хорошее сочетание, которое подойдет для реализации практически любых сервисов. Эта статья поможет вам быстро создать фулстек приложение.
Необходимые инструменты
Перед началом нужно убедиться, что на компьютере установлены все необходимые библиотеки, IDE и ПО, а именно:- NodeJS и npm. Их можно скачать с официального сайта nodejs.org. npm установится автоматически вместе с NodeJS.
- Предпочитаемый IDE, например, Visual Studio Code.
- Опционально, установить git для удобной работы с кодом.
О приложении
В этой статье напишем приложение, которое будет получать и отображать список дел. Структура папок будет выглядеть следующим образом.app/ frontend/ backend/
Создание бэкэнда на NodeJS
Запустим команду в папкеapp/backend
для инициализации проекта:
Эта команда создаст файлnpm init -y
package.json
. Этот файл содержит как общую информацию о проекте (название, версия, описание и т.д.), так и информацию о зависимостях, скрипты для запуска, сборки и тестирования.
Для создания сервера будем использовать express. Установим его с помощью команды:
Создадим файлnpm i express
index.js
, который будет содержать код для запуска сервера. Этот код запускает веб сервер на порту 3010
, если он не задан в переменных среды.
// backend/index.js const express = require('express'); const PORT = process.env.PORT || 3010; const app = express(); app.use((req, res, next) => { res.setHeader('Access-Control-Allow-Origin', '*'); next(); }); app.listen(PORT, () => { console.log(`Server listening on ${PORT}`); });
package.json
. В результате сможем запускать наш сервер с помощью команды npm start
.
Из директории// backend/package.json ... "scripts": { "start": "node ./index.js" }, ...
app/backend
запустим команду npm start
. Если ошибок нет, получим сообщение, что сервер прослушивает порт 3010.
PS C:\tutorials-coding\nodejs-react-app\backend> npm start > backend@1.0.0 start > node ./index.js Server listening on 3010
Создание API
API это интерфейс, с помощью которого React приложение будет общаться с веб-сервером, т.е. запрашивать, изменять или удалять данные. В нашем случае мы создадим API для получения списка дел в формате JSON. Создадим файлtodo-items.json
c объектами todo. Этот массив будем отдавать по запросу /api/todo-items
.
[ { "id": 1, "text": "Изучить NodeJS", "done": true }, { "id": 2, "text": "Изучить ReactJS", "done": true }, { "id": 3, "text": "Написать приложение", "done": false } ]
/api/todo-items
. React приложение будет отправлять GET
запрос на этот эндпоинт.
Для того чтобы изменения вступили в силу, нужно перезапустить NodeJS сервер. Для остановки скрипта - в терминале, в котором запущен// backend/index.js // ... const todoItems = require('./todo-items.json'); app.get('/api/todo-items', (req, res) => { res.json({ data: todoItems }); }); app.listen(PORT, () => { console.log(`Server listening on ${PORT}`); });
npm start
, нужно нажать Ctrl + C
(Command + C
). Далее снова запускаем npm start
.
Для проверки эндпоинта, в браузере перейдем по адресу http://localhost:3010/api/todo-items
. В результате получим, такой ответ.
![Ответ от Node JS сервера](https://it-dev-journal.ru/api/proxy/uploads/Otvet_ot_Node_JS_servera_eb09f94ead.jpg)
Создание фронтенда на React
В папкеapp/
откроем новый терминал и запустим команду для создания React приложения, где frontend
имя нашего приложения.
Дождемся установки всех зависимостей. В терминале перейдем в папкуnpx create-react-app@latest frontend
frontend
.
Установим библиотеку bootstrap для дальнейшего использования готовых компонентов.cd ./frontend
Заимпортируемnpm install react-bootstrap bootstrap
bootstrap.min.css
в файле frontend/src/index.js
.
Запустим приложение командойimport 'bootstrap/dist/css/bootstrap.min.css';
npm start
.
Получим следующее сообщение. Перейдем по указанному адресу в браузере.npm start
Compiled successfully! You can now view frontend in the browser. Local: http://localhost:3003 On Your Network: http://192.168.99.1:3003 Note that the development build is not optimized. To create a production build, use npm run build.
Отправка HTTP запроса из React в NodeJS
К этому моменту у нас уже есть рабочий сервер, который умеет принимать запросы и отдавать данные. Сделаем запрос на/api/todo-items
из React приложения. Для этого вызовем функцию fetch
из хука useEffect
в файле App.js
.
Открыв приложение в браузере, получим такой результат.// frontend/src/App.js import { useState, useEffect } from 'react'; import Form from 'react-bootstrap/Form'; import './App.css'; function App() { const [todoItems, setTodoItems] = useState([]); useEffect(() => { fetch('http://localhost:3010/api/todo-items') .then((res) => res.json()) .then((result) => setTodoItems(result.data)); }, []); return ( <div> {todoItems.map((item) => ( <Form.Group key={item.id} className="app__todo-item"> <Form.Check type="checkbox" checked={item.done} /> <Form.Control type="text" value={item.text} /> </Form.Group> ))} </div> ); } export default App;
![React приложение со списком дел](https://it-dev-journal.ru/api/proxy/uploads/React_prilozhenie_so_spiskom_del_6de9660054.jpg)