在 url 上使用 Express 中的参数提供静态文件
Serving static files on a url with parameters in Express
我在 Express 中使用 handlebars 模板引擎。在没有参数的情况下访问端点时,我所有的静态文件都会被提供。包含参数时不是这种情况。
app.engine('.hbs', hbs(handlebarsOptions));
app.set('view engine', '.hbs');
app.use(express.static('public'));
这是我尝试使用的端点。
app.get('/projects/:name', function(req, res) {
if(req.params.name === 'batteryapp') {
res.render('project', {name: 'BatteryApp'});
}
});
我看过一个示例,如果您使用 res.sendFile() 显然可以正常工作。但是,使用模板引擎时必须使用res.render()。
听起来您没有对模板中的静态资源使用绝对 URL(以 /
开头),因此它们是相对于 /projects/batteryapp
而不是根。
所以不要这样:
<script src="js/app.js"></script>
使用这个:
<script src="/js/app.js"></script>
我在 Express 中使用 handlebars 模板引擎。在没有参数的情况下访问端点时,我所有的静态文件都会被提供。包含参数时不是这种情况。
app.engine('.hbs', hbs(handlebarsOptions));
app.set('view engine', '.hbs');
app.use(express.static('public'));
这是我尝试使用的端点。
app.get('/projects/:name', function(req, res) {
if(req.params.name === 'batteryapp') {
res.render('project', {name: 'BatteryApp'});
}
});
我看过一个示例,如果您使用 res.sendFile() 显然可以正常工作。但是,使用模板引擎时必须使用res.render()。
听起来您没有对模板中的静态资源使用绝对 URL(以 /
开头),因此它们是相对于 /projects/batteryapp
而不是根。
所以不要这样:
<script src="js/app.js"></script>
使用这个:
<script src="/js/app.js"></script>