首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >express-handlebars模板不在静态路由上加载CSS样式

express-handlebars模板不在静态路由上加载CSS样式
EN

Stack Overflow用户
提问于 2019-02-19 16:02:00
回答 2查看 1.2K关注 0票数 2

我有一组不同的路由都使用相同的模板main,但是任何路由都离基本路由只有一个/应用CSS,但是任何超出它的路由都不会包含它。

因此,app.get('/profile)将使用CSS呈现,而app.get('/profile/edit')不会。

我不确定为什么这不起作用,据我所知,这条线应该适用于它下面设置的所有路线。

在server.js中

代码语言:javascript
复制
  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模板

代码语言:javascript
复制
   //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>
EN

回答 2

Stack Overflow用户

发布于 2020-01-13 23:06:24

确保在main.handlebars中,style.css的链接方式如下:

代码语言:javascript
复制
href="/css/styles.css"

而不是

代码语言:javascript
复制
href="css/styles.css"
票数 1
EN

Stack Overflow用户

发布于 2019-03-06 23:54:26

server.js中,您可以使用:

代码语言:javascript
复制
app.engine('hbs', expressHandlebars({
 defaultLayout: 'main',
 extname: '.hbs',
 layoutsDir: path.join(__dirname, 'layouts')
}))

这将要求您的main.hbs位于layouts-folder中。

这应该会解决你的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54761312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档