gpt4 book ai didi

javascript - node.js & 表达 : for loop and `app.get()` to serve articles

转载 作者:搜寻专家 更新时间:2023-10-31 23:38:53 24 4
gpt4 key购买 nike

我正在开发一个 node js express 应用程序,它使用 app.get() 来提供不同的网址。所以app.get('/',{});提供主页,app.get('/login'{ });提供登录页面等。

像本例一样,使用 for 循环以编程方式提供页面是一种好习惯吗?

var a = ["a", "b", "c"];
a.forEach(function(leg) {
app.get('/' + leg, function(req, res){
res.render('index.ejs', {
word : leg
});
});
});

index.ejs只是 <p><%= word %> </p>

所以site.com/a、site.com/b、site.com/c都是网页。

我想利用它在所有文章标题的列表(来自存储文章的数据库)上运行 .foreach()。

编辑: 该网站允许用户提交帖子,这些帖子将成为数据库中的“文章”。我希望这个循环在发布后路由到新提交的文章。如果我想做 app.get('/' + newPageName);对于用户提交的页面,我已经用 node server.js 启动了服务器,这是如何实现的?

最佳答案

利用中间件更好地处理请求。我假设您将有数十/数百个帖子,像您所做的那样为它们添加路线,并不是那么优雅。

考虑以下代码;我正在定义 /posts/:legId 形式的路线。我们会将所有请求匹配到此路由,获取文章并呈现它。

如果要定义少量路由,您可以使用正则表达式来定义它们。

// dummy legs
var legs = {
a: 'iMac',
b: 'iPhone',
c: 'iPad'
};

app.get('/posts/:leg', fetch, render, errors);

function fetch(req, res, next) {
var legId = req.params.leg;

// add code to fetch articles here
var err;
if (!legs[legId]) {
err = new Error('no such article: ' + legId);
}

req.leg = legs[legId];
next(err);
}

function render(req, res, next) {
res.locals.word = req.leg;
res.render('index');
}

function errors(err, req, res, next) {
console.log(err);

res.locals.error = err.message;
// render an error/404 page
res.render('error');
}

希望这对您有所帮助,如有任何问题,请随时问我。

关于javascript - node.js & 表达 : for loop and `app.get()` to serve articles,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20434188/

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