Настройка проекта MEAN-стека: MongoDB, статика и маршруты

Настройка проекта MEAN-стека включает подключение к локальной базе данных MongoDB, организацию работы со статическими файлами и создание структуры для хранения настроек проекта и обработчиков URL-адресов.

Настройка статической папки

Для хранения статических файлов (HTML, изображения, аудио и др.) создадим папку public. В файле index.js, после объявления переменной порта, добавим следующий код:

const express = require('express');
const path = require('path');
// ... другие импорты и код ...

app.use(express.static(path.join(__dirname, 'public')));

// ... остальной код ...

__dirname — путь к текущей директории; path.join объединяет пути; public — имя создаваемой папки. Создайте папку public в корне проекта.

Подключение к локальной базе данных

Создадим папку config и в ней файл db.js для хранения информации о подключении к базе данных и секретного ключа:

module.exports = {
  db: 'mongodb://localhost:27017/website',
  secret: 'mysecretkey'
};

db — строка подключения к MongoDB; website — имя базы данных; secret — секретный ключ (для разработки; в продакшене используйте более надежный ключ).

Подключение базы данных в index.js

Подключим db.js в index.js и осуществим подключение к MongoDB с помощью mongoose:

const config = require('./config/db');
const mongoose = require('mongoose');

// ... другой код ...

mongoose.connect(config.db, {
  useNewUrlParser: true,
  useUnifiedTopology: true,
  useFindAndModify: false,
  useCreateIndex: true,
  autoIndex: false
}).then(() => console.log('Успешно подключились к БД'))
  .catch(err => console.log('Не удалось подключиться к БД', err));

// ... остальной код ...

Параметры useNewUrlParser, useUnifiedTopology, useFindAndModify, useCreateIndex и autoIndex обеспечивают совместимость с новыми версиями MongoDB и устраняют предупреждения. При ошибке MongoNetworkError переустановите MongoDB.

Подключение CORS и body-parser

Для кросс-доменных запросов и обработки данных из форм (POST-запросы) подключим middleware cors и body-parser:

const cors = require('cors');
const bodyParser = require('body-parser');

// ... другой код ...

app.use(cors());
app.use(bodyParser.json());

Организация обработчиков маршрутов

Создадим папку routes и файл routes/account.js для обработчиков URL-адресов:

const express = require('express');
const router = express.Router();

router.get('/register', (req, res) => {
  res.send('Страница регистрации');
});

router.get('/auth', (req, res) => {
  res.send('Страница авторизации');
});

router.get('/profile', (req, res) => {
  res.send('Кабинет пользователя');
});

module.exports = router;

Подключим routes/account.js в index.js:

const accountRoutes = require('./routes/account');

// ... другой код ...

app.use('/account', accountRoutes);

Маршруты, начинающиеся с /account, будут обрабатываться routes/account.js.

В этом уроке настроены основные компоненты проекта MEAN-стека: подключение к базе данных MongoDB, работа со статическими файлами, middleware CORS и body-parser, а также структура проекта с обработчиками маршрутов в отдельном файле. Это обеспечивает чистый и понятный код, упрощая дальнейшую разработку и поддержку.

Что будем искать? Например,программа