express.js handlebars,获取静态文件目录,根据url保持更改

时间:2015-11-13 14:37:51

标签: express handlebars.js

我是新来表达的。基本上我的问题很简单。 我想从一个公共目录中提供像/ css javascript这样的文件..

layout.hbs

 <html>
    <head>
      <link href="css/style.css" rel="stylesheet" />
      <script src="js/app.js"></script>
    </head>

    <body> 
      {{{body}}}
    </body>
  </html>

router.js - &gt;我有三条路线指向一个index.hbs

router.get("/", function(req,res){
   res.render("index.hbs");
})
router.get("/articles", function(req,res){
   res.render("index.hbs");
})
router.get("/articles/show/:id", function(req,res){
   res.render("index.hbs");
})

现在问题出在我运行这个地址时:

 curl "http://localhost:3000/"

      http://localhost:3000/js/app
      http://localhost:3000/css/style.css
----------------------------------------------
    curl "http://localhost:3000/articles"

      http://localhost:3000/articles/js/app
      http://localhost:3000/articles/css/style.css
----------------------------------------------
    curl "http://localhost:3000/show/1"

      http://localhost:3000/show/1/js/app
      http://localhost:3000/show/1/css/style.css

注意/ css和/ js路径根据UrlRequest不断变化。如何防止这种情况发生?

我正在使用快递和把手,并且已经设置了我的静态文件

app.use(express.static(path.join(__dirname, 'public');

1 个答案:

答案 0 :(得分:12)

您应该将JS和CSS的网址指定为模板中的绝对网址:而不是css/style.css,请使用/css/style.css

第一个意味着“使用此路径相对于此页面到浏览器(和curl),第二个”使用此路径相对于主机 - 这就是你想。