gpt4 book ai didi

javascript - Express.js res.render 和 res.json

转载 作者:行者123 更新时间:2023-12-02 16:21:00 30 4
gpt4 key购买 nike

我在使用express.js 时遇到一些问题。我想在第一次请求时渲染我的模板,然后从路由中获取一些数据。我的路由如下所示:

app.use(function (req, res, next) {
res.render('index.jade');
next();
});

app.get('/', function(req, res){
res.json({a:1});
})

app.get('/contacts', function(req, res){
res.json({a:1});
})

app.get('/emails', function(req, res){
res.json({a:1});
})

问题是我所做的每个请求都会通过中间件设置对 html/text 的响应,并且我无法访问其他路由。 MB 有人知道我如何只渲染一次模板,并且能够到达其他路由(我尝试使用 Express 和 Backbone 进行 SPA)

最佳答案

解决方案您将jade转换为html并将index.html文件放在公共(public)文件夹中

启用快速静态文件服务

app.use(express.static('public'));

define 和其他特定路由返回静态文件和 api,如 (api|css|js)

    app.route('/:url(api|css|js)/*')
.get(function (req, res) {
var viewFilePath = '404';
var statusCode = 404;
var result = {
status: statusCode
};

res.status(result.status);
res.render(viewFilePath, function (err) {
if (err) { return res.json(result, result.status); }
// 404.jade file
res.render(viewFilePath);
});
});

// All other routes should redirect to the index.html
app.route('/*')
.get(function(req, res) {
// SPA index file
res.sendfile('/public/index.html');
});

现在您可以使用

app.get('/api/emails', function(req, res){  
res.json({a:1});
});
app.get('/api/contacts', function(req, res){
res.json({a:1});
});

关于javascript - Express.js res.render 和 res.json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29120323/

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