Javascript 节点体系结构的正确格式(基本)

Javascript 节点体系结构的正确格式(基本),javascript,node.js,express,model-view-controller,module,Javascript,Node.js,Express,Model View Controller,Module,导言 我在Node中构建了一些后端功能(第一次使用Node)。问题是整个东西都是在一个页面(index.js)中构建的,所以现在我要学习一些基本教程,并介绍express router中间件,现在尝试采用模块化MVC方法 这段代码很简单,但当我把它分成两个页面时,它就停止了运行Server.js和config.js。我知道这是个简单的问题,但我看不出来。有人能帮你发现问题并改进结构吗 问题 我去http://localhost:8080/about或者另一条路线 不能走动 而不是正确的打印输出

导言

我在Node中构建了一些后端功能(第一次使用Node)。问题是整个东西都是在一个页面(index.js)中构建的,所以现在我要学习一些基本教程,并介绍express router中间件,现在尝试采用模块化MVC方法

这段代码很简单,但当我把它分成两个页面时,它就停止了运行
Server.js
config.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);
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);
module.exports = function(router) {

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

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

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

// now start listening
后端/config.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);
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);
module.exports = function(router) {

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

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

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

// now start listening

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

在node中,变量的作用域是它们出现的文件,因此如果您只需将
require('./config')
添加到
server.js
文件中,这也不会起作用,因为
config.js
中的
router
变量是该文件的本地变量-它不会知道
server.js中的
router
变量

解决这个问题的方法是让
config.js
文件导出一个函数,
server.js
文件可以用来配置东西。比如说

config.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);
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);
module.exports = function(router) {

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

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

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

// now start listening
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);
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);
module.exports = function(router) {

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

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

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

// now start listening

您从未实际运行过第二个文件。如何运行第二个文件,是否包括在第一个文件中?像
include('back-end/config.js')