Как связать NodeJS с ReactJS?
ReactJS - это библиотека JavaScript с открытым исходным кодом, которая используется для создания пользовательских интерфейсов специально для одностраничных приложений. Он широко используется для создания SPA (одностраничных приложений) и имеет большое сообщество разработчиков.
NodeJS в основном используется для неблокирующих серверов, управляемых событиями, из-за своей однопоточной природы. Он используется для традиционных веб-сайтов и серверных служб API, но был разработан с учетом архитектур, основанных на push-уведомлениях в реальном времени.
В этой статье мы узнаем, как подключить NodeJS в качестве бэкэнда с ReactJS в качестве внешнего интерфейса.
Предпосылки:
- Базовые знания React и Node.
- Установлен Node.js (версия 12+).
- Установлен npm (версия 6+).
Структура проекта: это структура, когда все модули и необходимые файлы готовы.
Настройка бэкэнда: сначала мы будем работать над нашей бэкэнд-частью (NodeJS). В рабочей папке создайте файл с именем app.js для NodeJS и файл package.json для запуска всех необходимых нам модулей.
Установка модуля:
- Установка ExpressJS - это фреймворк nodeJS:
npm установить экспресс
- Установка nodemon:
npm установить nodemon
Конфигурация файла пакета .json: добавьте сценарий запуска и сценарий разработки, которые важны для запуска и динамического выполнения кода после изменений, внесенных в ваше приложение Node.js, соответственно, в файл package.json, как показано ниже.
HTML
{ "name": "demoapp", "version": "1.0.0", "description": "", "main": "app.js", "scripts": { "test": "echo "Error: no test specified" && exit 1", "start": "node app.js", "dev": "nodemon app.js" }, "author": "", "license": "ISC", "dependencies": { "express": "^4.17.1" } } |
Имя файла - app.js: вот простой код JavaScript, который должен быть написан в app.js, предназначенном для NodeJS.
Javascript
const express = require( "express" ); const app = express(); app.get( "/" , (req, res) => { res.send( "Hello World!" ); }); const PORT = process.env.PORT || 8080; app.listen(PORT, console.log(`Server started on port ${PORT}`)); |
Запустите приложение, используя следующую команду:
npm запустить dev
Выход:
- Это будет консольный вывод.
- Теперь перейдите по адресу http: // localhost: 8080 / в своем браузере, вы увидите следующий результат.
Имя файла-app.js: Теперь для подключения части React нам нужно внести некоторые изменения в app.js NodeJS. Мы завершили бэкэнд-часть.
Javascript
const express = require( "express" ); const app = express(); app.post( "/post" , (req, res) => { console.log( "Connected to React" ); res.redirect( "/" ); }); const PORT = process.env.PORT || 8080; app.listen(PORT, console.log(`Server started on port ${PORT}`)); |
Настройка внешнего интерфейса: во- первых, мы должны создать приложение React и запустить ваше приложение, написав следующую команду.
Демо-версия приложения npx create-response-app CD демо npm start
Вывод: Теперь перейдите по адресу http: // localhost: 3000 / в своем браузере, вы увидите следующий вывод.
Подключение: мы завершили и фронтенд, и бэкэнд, теперь нам нужно соединить и то, и другое. Теперь для подключения Reactjs к Nodejs мы добавили эту строку в package.json папки приложения react:
"прокси": "http: // localhost: 8080
Имя файла- package.json: файл package.json находится в папке приложения React. Это сообщает React, что запросы API прокси на сервер Node.js, созданный с помощью Express в нашем проекте.
HTML
{ "name": "demo", "version": "0.1.0", "private": true, "proxy": " http://localhost:8080 ", "dependencies": { "@testing-library/jest-dom": "^5.11.4", "@testing-library/react": "^11.1.0", "@testing-library/user-event": "^12.1.10", "react": "^17.0.1", "react-dom": "^17.0.1", "react-scripts": "4.0.2", "web-vitals": "^1.0.1" }, "scripts": { "start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject" }, "eslintConfig": { "extends": [ "react-app", "react-app/jest" ] }, "browserslist": { "production": [ ">0.2%", "not dead", "not op_mini all" ], "development": [ "last 1 chrome version", "last 1 firefox version", "last 1 safari version" ] } } |
Имя файла - App.js: внесены некоторые изменения в app.js React, чтобы показать, что они связаны.
Javascript
import logo from "./logo.svg" ; import "./App.css" ; function App() { return ( <div className= "App" > <header className= "App-header" > <img src={logo} className= "App-logo" alt= "logo" /> <p>A simple React app.....</p> <a className= "App-link" target= "_blank" rel= "noopener noreferrer" > Learn React </a> <form action= "../../post" method= "post" className= "form" > <button type= "submit" >Connected?</button> </form> </header> </div> ); } export App; default |
Теперь запустите процесс Nodejs npm run dev в одном терминале, а в другом терминале запустите Reactjs, используя npm start одновременно .
Вывод: мы видим ответный вывод, мы видим кнопку «Подключиться», мы должны по ней щелкнуть. Теперь, когда мы видим консоль на стороне сервера, мы видим, что ReactJS связан с NodeJS.