Подтвердить что ты не робот

Структура приложения 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) Как я могу отделить запросы db в новых файлах наилучшим образом?

Этот файл будет довольно большим, даже если я разделяю логику db.

2) Каков хороший способ разделить маршруты? Может быть, отдельные модули? а затем потребовать их всех в app.js?

4b9b3361

Ответ 1

Здесь есть аналогичный вопрос, который вы должны прочитать: Как структурировать приложение express.js?

1) Вся ваша логика запроса должна быть помещена в модели (модули, которые, например, находятся в/модели)

2) Отделите все свои маршруты (контроллеры) на модули (и поместите их в/маршруты для ex) По маршрутам я имею в виду, например: - вся логика маршрутов "Пользователи" переходит в /routes/users.js

Постарайтесь сохранить приложение как возможно MVC-ish.

Небольшой пример для вашего приложения выше:

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);
  }
}

Ответ 2

В пакете загрузки expressjs есть папка с именем "mvc". Автор является хорошим примером крошечной и эффективной структуры mvc. Пройдя через код, вы получите много вдохновения.

Ответ 3

Как насчет express-train? я использовал его в последнее время, и он хорошо работает со сложными структурами приложений.