Структура приложения Nodejs/Expressjs
Скажем, у меня есть этот код для разделения маршрутов в expressjs:
module.exports = function(express,app,client) {
app.get('/', function(req,res,next) {
var query = 'SELECT * FROM users LIMIT 10';
var user = client.query(query, function (err, results, fields) {
res.render('index', {
title: 'test',
users: results
});
client.end();
});
});
}
И требуют этого в app.js
:
require('./controllers/routes.js')(express,app,client);
1) Как лучше всего разделить запросы БД на новые файлы?
Этот файл станет довольно большим, даже если я разделю логику БД.
2) Что такое хороший способ разделения маршрутов? Может быть, отдельные модули? а затем потребовать их всех в app.js
?
3 ответа
Здесь есть похожий вопрос, который вы должны прочитать: Как структурировать приложение express.js?
1) Вся логика вашего запроса должна быть помещена в модели (например, модули, которые находятся в / models)
2) Разделите все ваши маршруты (контроллеры) на модули (и поместите их в / маршруты для ex). Под маршрутами я имею в виду, например: - вся логика для маршрутов "пользователей" идет в /routes/users.js
Постарайтесь сохранить ваше приложение как MVC-иш, насколько это возможно.
Небольшой пример для вашего приложения выше:
app.js
// configuration for express etc
require('./routes/index')(app)
маршруты /index.js
var model = require("../models/users.js");
module.exports = function (app) {
app.get('/', function (req, res, next) {
model.get_recent(function (err, results) {
// do stuff with your results
res.render('index');
});
});
}
Модели / users.js
module.exports = {
get_recent: function(callback) {
var query = "SELECT * FROM users LIMIT 10";
database.query(query, callback);
}
}
В пакете для экспресс-загрузки есть папка с именем "mvc". Автор приводит хороший пример крошечной и эффективной структуры mvc. Проходя код, вы получите много вдохновения.
Как насчет экспресса? Я использовал его в последнее время, и он хорошо сочетается со сложными структурами приложения.