Автор оригинала: Dillion Megida.
Введение в Мерн
В этой статье мы будем строить и развертывание приложения, построенного с стеком Мерн в Heroku.
Мерн, который означает Mongodb, Express, React и Node.js, является популярным технологическим стеком, используемым в создании веб-приложений. Он включает в себя работу Frontend (с реагированием), бэкэндской работой (с экспресс и NODEJS) и базой данных (с MongoDB).
Heroku С другой стороны, является платформой в качестве службы (PAAS), которая позволяет разработчикам построить, запустить и действовать приложения полностью в облаке.
Для базы данных мы будем использовать MongoDB ATLAS, который является глобальной службой базы данных облачных баз данных для современных приложений. Это более безопасно, чем Mongodb, установленные локально на нашем сервере, и он также дает нам номер для дополнительных ресурсов на наших серверах.
Для Frestend мы построим простое приложение React React, которое делает Post запросы на API для добавления пользователя, а также может сделать запросы на получение всех пользователей.
Вы можете пропустить на любой шаг со таблицей, указанного ниже.
Оглавление
- Введение в Мерн
- Давайте начнем строить
- Создание приложения React
- Создание бэкэнда
- Подключите базу данных Mongodb Atlas
- Призывая API на Frontend
- Развертывание Героку
- Создать приложение Heroku
- Настроить Package.json.
- Заворачивать
Давайте начнем строить
Создание приложения React
Примечание: Прежде чем мы начнем с нашего проекта, Узел
Должен быть установлен на вашем компьютере. Узел
Также дает нам NPM
, который используется для установки пакетов.
Установите Create-React-App
Create-React-App
используется для создания приложения React Starter.
Если у вас нет Create-React-App
Установлен, введите следующее в командной строке:
npm i create-react-app -g
-G
Флаг устанавливает пакет глобально.
Создайте каталог проекта
create-react-app my-project cd my-project
Вышеуказанное создает каталог «My-Project» и устанавливает зависимости, которые будут использоваться в приложении RACH STARTER. После завершения установки вторая команда меняется в каталог проекта.
Запустите приложение и сделайте необходимые изменения
npm start
Приведенная выше команда запускает приложение React, которое дает вам URL-адрес, где вы превысите проект. Затем вы можете внести необходимые изменения, такие как изменение изображений или текста.
Установка Axios.
npm i axios --save
Axios
Является ли библиотека JavaScript, используемая для облегчения HTTP-запросов. Он будет использоваться для отправки запросов от Frestend (React) в API, предоставленные бэкэндом.
Создание бэкэнда
Организация управляет API, обрабатывает запросы, а также подключается к базе данных.
Установите пакеты Backend
npm i express cors mongoose body-parser --save
Экспресс
: «Express – это минимальный и гибкий веб-прикладной Node.js, который обеспечивает надежный набор функций для веб-приложений» – Express ДокументацияCORS
: «CORS – это пакет Node.js для предоставления промежуточного программного обеспечения Connect/Express, которая может быть использована для включения CORS с различными параметрами» – Документация CORS.мангуст
: «Mongoose – это инструмент моделирования объекта MongoDB, предназначенный для работы в асинхронной среде. Монгуст поддерживает обе обещания, так и обратные вызовы» – Монгусная документацияТело-парсер
: «У Node.js тело разряжает промежуточное программное обеспечение». – Документация по телу-парсеру
Создать папку Backend
mkdir backend cd backend
Настройте бэкэнда
Создать точку входа Server.js
Сначала создайте server.js
Файл, который будет точкой записи на бэкэнду.
touch server.js
В server.js
Введите следующее:
const express = require('express'); const bodyParser = require('body-parser'); const cors = require('cors'); const path = require('path') const app = express(); require('./database'); ----- app.use(bodyParser.json()); app.use(cors()); ----- // API const users = require('/api/users'); app.use('/api/users', users); ----- app.use(express.static(path.join(__dirname, '../build'))) app.get('*', (req, res) => { res.sendFile(path.join(__dirname, '../build')) }) ----- const port = process.env.PORT || 5000; app.listen(port, () => { console.log(`Server started on port ${port}`); });
Express.Static
Поставляют статические файлы, которые являются теми, которые построены, когда NPM запустить сборку
работает на реактивный проект. Помните, что встроенный файл находится в папке сборки.
Из нашей конфигурации любой запрос отправлен /API/пользователи
будет отправлен на Пользователи
API, который мы собираемся настроить.
Настройте API пользователей
mkdir api touch api/users.js
В API/users.js
Добавьте следующее:
const express = require('express'); const router = express.Router() ----- const User = require('../models/User'); ----- router.get('/', (req, res) => { User.find() .then(users => res.json(users)) .catch(err => console.log(err)) }) ----- router.post('/', (req, res) => { const { name, email } = req.body; const newUser = new User({ name: name, email: email }) newUser.save() .then(() => res.json({ message: "Created account successfully" })) .catch(err => res.status(400).json({ "error": err, "message": "Error creating account" })) }) module.exports = router
В указанном выше коде мы создаем обработчик Get и Post Project, который выбирает всех пользователей и пользователей пользователей. Получение и добавление пользователя в базу данных помогает Пользователь
Модель мы создадим.
Создать модель пользователя
mkdir models touch models/user.js
В Модели/user.js
Добавьте следующее:
const mongoose = require('mongoose'); const Schema = mongoose.Schema; ----- const userSchema = new Schema({ name: { type: String, required: true }, email: { type: String, required: true } }) module.exports = mongoose.model("User", userSchema, "users")
В вышеупомянутый код схема создается для пользователя, которая содержит поля пользователя. В конце файла модель («пользователь») экспортируется с схемой и коллекцией («пользователям»).
Подключите базу данных Mongodb Atlas
По словам Документы , «Mongodb Atlas – это глобальная облачная база данных для современных приложений».
Сначала нам нужно зарегистрироваться на Cloud Mongo. Пройти через Эта документация Создать учетную запись ATLAS и создать свой кластер.
Одна вещь, которую стоит отметить, это Whitelisting ваш соединение IP-адрес Отказ Если вы игнорируете этот шаг, у вас не будет доступа к кластеру, поэтому обратите внимание на этот шаг.
Кластер – это небольшой сервер, который будет управлять нашими коллекциями (аналогично таблицам в базах данных SQL). Чтобы подключить свою бэкфон к кластеру, создайте файл database.js
, который, как вы можете видеть, требуется в server.js
Отказ Затем введите следующее:
const mongoose = require('mongoose'); const connection = "mongodb+srv://username:@ / ?retryWrites=true&w=majority"; mongoose.connect(connection,{ useNewUrlParser: true, useUnifiedTopology: true, useFindAndModify: false}) .then(() => console.log("Database Connected Successfully")) .catch(err => console.log(err));
В Соединение
Переменная, введите ваш Имя пользователя
(Для облака Mongodb), ваш пароль
(кластер пароль), ваш кластер
(адрес для вашего кластера) и база данных
(Название вашей базы данных). Все это можно легко обнаружить, если вы следили за документацией.
Призывая API на Frontend
Все API будут доступны на localhost: 5000
локально, как мы создаем server.js
Отказ При развертывании Heroku сервер будет использовать порт, предоставляемый сервером ( Process.env.port
).
Чтобы облегчить вещи, Rect позволяет нам указать прокси, к которому запросы будут отправлены.
Открыть Package.json
И незадолго до последней курчавой скобки добавьте следующее:
"proxy": "http://localhost:5000"
Таким образом, мы можем напрямую отправить запросы на API/пользователи
Отказ И когда наш сайт развернут и построен, порт по умолчанию наша приложение будет использоваться с тем же API.
Открыть App.js
Для реагирования и добавить следующее:
import React, {useState, useEffect} from 'react' import axios from 'axios'; ----- const App = function () { const [users, setUsers] = useState(null); const [username, setUsername] = useState(""); const [email, setEmail] = useState(""); useEffect(() => { axios .get("/api/users") .then((users) => setUsers(users)) .catch((err) => console.log(err)); }, []); function submitForm() { if (username === "") { alert("Please fill the username field"); return; } if (email === "") { alert("Please fill the email field"); return; } axios .post("/api/users", { username: username, email: email, }) .then(function () { alert("Account created successfully"); window.location.reload(); }) .catch(function () { alert("Could not creat account. Please try again"); }); } return ( <>); }; export default AppMy Project
{users === null ? (Loading...
) : users.length === 0 ? (No user available
) : ( <>Available Users
{users.map((user, index) => (
)}- Name: {user.name} - Email: {user.email}
))}
Уместите
и Useffect
Крючки используются для обработки состояния и Sideeffects
Отказ Что в основном происходит, что первое состояние пользователей является null
и «загрузка …» показано в браузере.
В Useffect
, []
используется для указания того, что в ComponentDidmount
Этап (когда компонент установлен), сделайте запрос AXIOS на API, который работает на localhost: 5000
Отказ Если это получает результат, и пользователь не отображается пользователя, «доступный пользователь» не отображается. В противном случае отображается пронумерованный список пользователей.
Если вы хотите узнать больше о Уместите
и Useffect
Проверьте эту статью – Что чертовски реагируют крюки?
Благодаря доступной форме может быть сделан запрос на запись для публикации нового пользователя. Состояние входов контролируется и отправляется на API в localhost: 5000
на представление. После этого страница обновляется, а новый пользователь отображается.
Развертывание Героку
Чтобы развернуть приложение к Heroku, вы должны иметь учетную запись Heroku.
Перейти к их страница создать учетную запись. Тогда пройдите через их документация Как создать приложение Heroku. Также проверьте Документация на Heroku Cli.
Создать приложение Heroku
Во-первых, войдите в Heroku:
heroku login
Это перенаправляет вас на URL в браузере, где вы можете войти в систему. Как только вы закончите, вы можете продолжить в терминале.
В том же каталоге реагирования проекта, выполните следующие действия:
heroku create
Это создаст приложение Heroku, а также дать вам URL для доступа к приложению.
Настроить Package.json.
Heroku использует ваш файл package.json, чтобы узнать, какие сценарии для запуска и какие зависимости устанавливают для вашего проекта для успешного запуска.
В вашем Package.json
Файл, добавьте следующее:
{ ... "scripts": { ... "start": "node backend/server.js", "heroku-postbuild": "NPM_CONFIG_PRODUCTION=false npm install npm && run build" }, ... "engines": { "node": "10.16.0" } }
Heroku запускает пост-сборка, который, как вы можете видеть, устанавливает ваши зависимости и управляет сборкой вашего реагирования проекта. Затем он начинает ваш проект с Начать
Сценарий, который в основном начинает ваш сервер. После этого ваш проект должен работать нормально.
Двигатели
Определяет версии двигателей, таких как Узел
и NPM
установить.
Подтолкнуть к Героку
git push heroku master
Это толкает ваш код в Heroku. Не забудьте включить ненужные файлы в .gitignore
Отказ
Через несколько секунд ваш сайт будет готов. Если есть какие-либо ошибки, вы можете проверить свой терминал или перейти на приборную панель в браузере, чтобы просмотреть журналы сборки.
Теперь вы можете просмотреть свой сайт в URL Heroku, отправленный, когда вы работаете Heroku создать
Отказ
Это все, что есть к этому. Рад, что вы прочитали это далеко.
Заворачивать
Конечно, есть больше приложений стека Mern.
Эта статья не пошла так глубоко, как аутентификации, логин, сеансы и все это. Он просто охватил, как развернуть приложения Meern Stack в Heroku и работать с Mongodb Atlas.
Вы можете найти другие статьи, такие как это в моем блоге – dillionmegida.com.
Спасибо за прочтение.