Создание интернет-магазина на Node.js: пошаговое руководство

В этой статье мы рассмотрим процесс создания простого интернет-магазина с использованием Node.js. Мы создадим базовую структуру приложения, добавим функционал для работы с товарами и корзину покупок.

Предварительные требования

  • Установленный Node.js (рекомендуемая версия 18+)
  • Базовые знания JavaScript
  • Понимание основ работы с базами данных

Шаг 1: Создание проекта

Создаем новую директорию и инициализируем проект:

mkdir online-store
cd online-store
npm init -y

Устанавливаем необходимые зависимости:

npm install express mongoose body-parser cors

Шаг 2: Настройка основного файла

Создаем файл app.js и добавляем базовый код:

const express = require(‘express’);
const mongoose = require(‘mongoose’);
const bodyParser = require(‘body-parser’);
const cors = require(‘cors’);

const app = express();
const port = 3000;

// Подключение middleware
app.use(bodyParser.json());
app.use(cors());

// Подключение к базе данных
mongoose.connect(‘mongodb://localhost/onlinestore’, {
useNewUrlParser: true,
useUnifiedTopology: true
});

// Определение модели товара
const Product = mongoose.model(‘Product’, new mongoose.Schema({
name: String,
price: Number,
description: String
}));

// Маршрут для получения списка товаров
app.get(‘/products’, async (req, res) => {
const products = await Product.find();
res.json(products);
});

// Запуск сервера
app.listen(port, () => {
console.log(`Сервер запущен на порту ${port}`);
});

Шаг 3: Добавление функционала корзины

Создаем файл cart.js:

const express = require(‘express’);
const router = express.Router();

// Хранилище корзины (в реальном проекте лучше использовать сессии или БД)
let cart = [];

// Добавление товара в корзину
router.post(‘/cart’, (req, res) => {
const { productId, quantity } = req.body;

// Логика добавления товара
cart.push({ productId, quantity });

res.json({ message: ‘Товар добавлен в корзину’ });
});

// Получение содержимого корзины
router.get(‘/cart’, (req, res) => {
res.json(cart);
});

module.exports = router;

Шаг 4: Интеграция корзины в основное приложение

В app.js добавляем:

const cartRouter = require(‘./cart’);

// Подключаем маршруты корзины
app.use(‘/api’, cartRouter);

Шаг 5: Тестирование

Запускаем сервер:

node app.js

Можно протестировать API через Postman или curl:

# Получение списка товаров
curl http://localhost:3000/products

# Добавление товара в корзину
curl -X POST http://localhost:3000/api/cart -H «Content-Type: application/json» -d ‘{«productId»: «1», «quantity»: 1}’

Дополнительные улучшения

  1. Добавьте аутентификацию пользователей
  2. Реализуйте систему платежей
  3. Настройте валидацию данных
  4. Добавьте frontend-часть
  5. Настройте логирование и обработку ошибок

Заключение

Мы создали базовую структуру интернет-магазина на Node.js. Этот пример можно расширить, добавив дополнительные функции и улучшив производительность. Главное преимущество такого подхода — возможность масштабирования и добавления новых функций по мере необходимости.

Этот проект можно использовать как основу для более сложных приложений, добавляя новые модули и улучшая существующий функционал.