我有一组不同的路由都使用相同的模板main,但是任何路由都离基本路由只有一个/应用CSS,但是任何超出它的路由都不会包含它。
因此,app.get('/profile)将使用CSS呈现,而app.get('/profile/edit')不会。
我不确定为什么这不起作用,据我所知,这条线应该适用于它下面设置的所有路线。
在server.js中
app.use(express.static(__dirname + "/public"));
//Many different routes
//...
//...
//renders with CSS successfully
app.get("/profile", (req,res) => {
res.render('profile', {
layout: "main",
cause: {
title: title
},
csrfToken: req.csrfToken
});
});
//this is the route that renders without CSS
app.get("/profile/edit", (req,res) => {
res.render('edit', {
navItems: [
{name: 'See your fellow supporters',
link: "/signatures"}
],
layout: "main",
cause: '',
csrfToken: req.csrfToken
});
});Handlebar模板
//edit.handlebars
<h2>Change your details</h2>
<form method="POST">
<input type="text" name="firstName" placeholder="first name">
<label for="firstName">First Name</label>
<input type="text" name="lastName" placeholder="last name">
<label for="lastName">Last Name</label>
<input type="email" name="email" placeholder="e-mail">
<label for="email">E-mail</label>
<input type="password" name="password" placeholder="password">
<label for="password">Password</label>
<input type="text" name="age" placeholder="age">
<label for="age">Age</label>
<input type="text" name="city" placeholder="city/town">
<label for="city">City or Town</label>
<input type="text" name="homepage" placeholder="homepage or social media">
<label for="homepage">Homepage</label>
<input type="hidden" name="_csrf" value="{{csrfToken}}">
<input id="formButton" type="submit" name="submit" value="Update">
</form>
//profile.handlebars
<h2>Let people know that you support: {{>cause}}</h2>
<form method="POST">
<input type="text" name="age" placeholder="age">
<input type="text" name="city" placeholder="city/town">
<input type="text" name="homepage" placeholder="homepage or social media">
<input type="hidden" name="_csrf" value="{{csrfToken}}"
<input id="formButton" type="submit" name="submit" value="continue">
</form>发布于 2020-01-13 23:06:24
确保在main.handlebars中,style.css的链接方式如下:
href="/css/styles.css"而不是
href="css/styles.css"发布于 2019-03-06 23:54:26
在server.js中,您可以使用:
app.engine('hbs', expressHandlebars({
defaultLayout: 'main',
extname: '.hbs',
layoutsDir: path.join(__dirname, 'layouts')
}))这将要求您的main.hbs位于layouts-folder中。
这应该会解决你的问题。
https://stackoverflow.com/questions/54761312
复制相似问题