Автор оригинала: 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 (
<>
My Project
{users === null ? (
Loading...
) : users.length === 0 ? (
No user available
) : (
<>
Available Users
{users.map((user, index) => (
-
Name: {user.name} - Email: {user.email}
))}
)}
);
};
export default App
Уместите и 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.
Спасибо за прочтение.