正确的节点架构格式(BASIC)

时间:2017-06-16 14:49:02

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

简介

我在Node中构建了一些后端功能(第一次使用Node)。问题是整个事情是在一个页面(index.js)中构建的,所以现在我遵循一些基本教程并设置快速路由器中间件,现在尝试遵循模块化MVC方法,

这段代码很简单,但是当我分成两页Server.jsconfig.js时,它们会刹车。我知道这是一个简单的问题,但我无法发现它。有人可以帮助发现问题并改善结构吗?

问题

我转到http://localhost:8080/about或其他路线,我得到了

  

无法获取/关于

而不是正确的打印输出。

后端/ server.js

var express = require('express');
var app     = express();
var port    =   process.env.PORT || 8080;

// get an instance of router
var router = express.Router();

// START THE SERVER
// ==============================================
app.listen(port);
console.log('Server has started!! ' + port);

后端/ config.js

router.use(function(req, res, next) {

    console.log(req.method, req.url);

    next();
});

router.get('/', function(req, res) {
    res.send('im the home page!');
});

// sample route with a route the way we're used to seeing it
router.get('/sample', function(req, res) {
    res.send('this is a sample!');
});


router.get('/about', function(req, res) {
    res.send('im the about page!');
});


app.route('/login')

    .get(function(req, res) {
        res.send('this is the login form');
    })

    .post(function(req, res) {
        console.log('processing'); // shows on console when post is made
        res.send('processing the login form!'); // output on postman
    });

app.use('/', router);

1 个答案:

答案 0 :(得分:1)

正如@SLaks在评论中所说,您需要导入(require)您的backend/config.js文件。但它并不那么简单......

在节点中,变量的范围限定在它们出现的文件中,因此如果您只是将require('./config')添加到server.js文件中,那么这也不会起作用,因为router config.js中的变量是该文件的本地变量 - 它不会知道router中的server.js变量。

解决方法是让config.js文件导出server.js文件可用于配置内容的函数。例如

<强> config.js

module.exports = function(router) {

    // set up your router here with router.use, etc.

};

<强> server.js

var configure = require('./config');

// after you set up your express router...
configure(router);

// now start listening