Объясните структуру приложения на Express JS?
Этот вопрос проверяет понимание базовой структуры проекта на Express.js и умение организовывать код.
Короткий ответ
Структура приложения Express.js включает входную точку (обычно app.js или server.js), каталоги для маршрутов, контроллеров, моделей, middleware, представлений и статических файлов. Это разделение упрощает чтение, поддержку и масштабирование приложения.
Длинный ответ
Стандартная структура приложения Express.js:
- Входная точка (app.js или server.js):
Здесь настраивается сервер, подключается база данных, middleware и основные маршруты.
const express = require('express');
const app = express();
const routes = require('./routes/index');
app.use(express.json());
app.use('/api', routes);
app.listen(3000, () => console.log('Server running on port 3000'));
- Каталог routes:
Содержит файлы, описывающие маршруты приложения.
// routes/userRoutes.js
const express = require('express');
const router = express.Router();
const userController = require('../controllers/userController');
router.get('/', userController.getUsers);
module.exports = router;
- Каталог controllers:
Содержит логику обработки запросов.
// controllers/userController.js
exports.getUsers = (req, res) => {
res.json([{ id: 1, name: 'John Doe' }]);
};
- Каталог models:
Используется для описания схем данных, например, для MongoDB.
const mongoose = require('mongoose');
const UserSchema = new mongoose.Schema({
name: String,
email: String,
});
module.exports = mongoose.model('User', UserSchema);
- Каталог middleware:
Содержит пользовательские middleware для обработки запросов.
module.exports = (req, res, next) => {
console.log(`${req.method} ${req.url}`);
next();
};
- Каталог views:
Если используется шаблонизатор (EJS, Pug), здесь хранятся файлы представлений.
- Каталог public:
Для хранения статических файлов (CSS, изображения, JavaScript).
public/
css/
js/
images/
- Преимущества такой структуры:
1. Разделение обязанностей.
2. Простота в масштабировании.
3. Удобство тестирования и поддержки.
Эта структура помогает создавать гибкие и масштабируемые приложения, упрощая работу с кодом в больших проектах.