在express.js中加载静态文件

我使用快递来build立networking应用程序。 我有路由或静态文件的问题。 我添加了对静态文件的引用:

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

并设定路线:

 app.use('/', routes); app.use('/users', users); app.use('/blog', blog); 

在我的blog路由器中:

 var express = require('express'); var router = express.Router(); /* GET home page. */ router.get('/', function(req, res) { res.render('blog/index'); }); /* GET registration form. */ router.get('/registration', function(req, res) { res.render('blog/registration'); }); module.exports = router; 

所以我的问题:当我去/blog我的静态文件加载正确(没有博客的path)。 但是当我去/blog/registration我得到错误(博客的path):

 GET /blog/stylesheets/css/bootstrap.min.css registration:1 GET /blog/stylesheets/lib/og-component.css registration:1 GET /blog/stylesheets/lib/venobox.css registration:1 GET /blog/stylesheets/lib/zocial.css registration:1 GET /blog/stylesheets/lib/font-awesome.css registration:1 GET /blog/stylesheets/lib/animate.css registration:1 GET /blog/stylesheets/css/style.css registration:1 GET /blog/stylesheets/css/scheme/light-blue.css registration:1 GET /blog/js/lib/modernizr.custom.js registration:1 GET /blog/images/jssolutions-logo.png 404 (Not Found) 

我该如何解决这个问题:在path中加载没有blog静态文件:

 /stylesheets/css/bootstrap.min.css 

这与expression式或static无关,而更多的是关于如何从您的网页引用静态文件。 具体来说,如果你的url看起来像

 <link href="stylesheets/stylesheet.css" rel="stylesheet" /> 

然后这些被认为是对于当前的URL根目录。 例如,如果当前URL是/blog ,那么根目录是/因此该脚本从/stylesheets/stylesheet.css加载。 所以在你的场景中,如果URL是/blog/registration ,那么根目录是/blog/因此这个脚本是从/blog/stylesheets/stylesheet.css加载的。

如果所有的静态文件都需要从网站的根目录下载,那么在开始的时候要放一个正斜杠

 <link href="/stylesheets/stylesheet.css" rel="stylesheet" /> 

如果您的样式表和其他静态内容存储在/ public文件夹中,并且包含以下语句:

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

那么你的html应该看起来像这样:

 <link href="/stylesheets/stylesheet.css" rel="stylesheet"> 

即使你在/ blog /中,也应该能find它们,否则就好像你在使用相对path。