gpt4 book ai didi

javascript - Node 架构的正确格式 (BASIC)

转载 作者:行者123 更新时间:2023-12-03 04:05:11 25 4
gpt4 key购买 nike

简介

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

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

问题

我转到http://localhost:8080/about或不同的路线,我得到

Cannot GET /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);

最佳答案

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

在 Node 中,变量的范围仅限于它们出现的文件,因此如果您只需将 require('./config') 添加到 server.js 文件中,这也不起作用,因为 config.js 中的 router 变量是该文件的本地变量 - 它不会知道 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

关于javascript - Node 架构的正确格式 (BASIC),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44592203/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com