Javascript 节点体系结构的正确格式(基本)
导言 我在Node中构建了一些后端功能(第一次使用Node)。问题是整个东西都是在一个页面(index.js)中构建的,所以现在我要学习一些基本教程,并介绍express router中间件,现在尝试采用模块化MVC方法 这段代码很简单,但当我把它分成两个页面时,它就停止了运行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或者另一条路线 不能走动 而不是正确的打印输出
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')代码>