javascript - 使用 Express.JS 的基本 MVC 原则

标签 javascript node.js model-view-controller express

express.js为您提供了一个不错的准系统来实现标准的MVC开发模式。然而,我见过的大多数教程都在路由文件或全局应用程序文件中应用 Controller 逻辑。

在理想世界中:

模型 - 管理基本行为和数据

Controller - 向模型和 View 发送命令

View - 渲染模型中的数据

<小时/>

目前我有以下内容:

routes/index.js - 指向操作的路由

router.get('/hotels', function(req, res, next) {
    hotels.run(req, res, next);
    next();
});

controllers/hotels.js - Controller 向模型发送命令

module.exports = {
    run: function(req, res, next) {
        var users = new require('../models/hotels');
        users.run(function(callback) {
            res.render('hotels', { title: 'Hotels page', users: callback });
        }); 
    }
}

models/hotel.js - 模型请求数据

module.exports = {
    run: function(callback) {
        connection.query(sql, function(err, rows, fields) {
            callback(rows);
            //console.log(rows);
        });
    }
}

无论我尝试什么,我都无法从模型获取数据以返回到 Controller ,然后传递到 View 。我知道上述代码中可能存在多个错误,因为我是新来表达的。但基本原理应该没问题,我希望这对于我无法返回模型数据的原因是显而易见的,因为除了回调之外,上述所有逻辑都有效。

最佳答案

如果人们希望在 express.js 项目上使用类似的 MVC 方法,我相信我已经解决了这个问题。

routes.js - 进行了更改以匹配 Kevin 的更简洁的方法。

router.get('/hotels', hotels.run);

controller/hotels.js -

module.exports = {
    run: function(req, res, next) {
        var users = new require('../models/hotels');
        users.run(function(err, callback) {
            res.render('hotels', { title: 'Hotels page', users: callback });
        });
    }
}

models/hotel.js

module.exports = {
    run: function(callback) {
        connection.query(sql, function(err, rows, fields) {
            callback(err, rows);
        });
    }
}

现在模型按照 Controller 的请求返回查询,使 Controller 能够将数据传递到 View 。

关于javascript - 使用 Express.JS 的基本 MVC 原则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28371032/

相关文章:

c# - 如何捕捉链接或按钮点击?

javascript - 从 php 创建的下拉列表列表中单独填充 textarea

node.js - 如何安装 node/npm 以便 'sudo npm' 在 ec2 实例上工作?

javascript - 如何更改mvc中的日期格式dd/mm/yyyy?

javascript - Jquery Accordion 菜单 - 导航到新页面时保持打开状态

javascript - 为什么我的功能没有引用正确的路线?

mysql - 如何使用 Sequelize CLI 从 Sequelize 模型自动生成迁移?

mysql - 错误 : connect ECONNREFUSED while accessing mysql

php - 多语言 PHP 应用程序 : best practice?

java - 从多个 URL 返回 View 时出现问题