使用路由器时如何修复相对路径(ExpressJS)

时间:2014-12-25 23:44:32

标签: node.js express path pug

我的布局jade文件中的扩展路径如下所示:

link(rel='stylesheet', href='../lib/bootstrap/dist/css/bootstrap.min.css')
link(rel='stylesheet', href='../lib/components-font-awesome/css/font-awesome.min.css')

所以如果我的链接像是一样的话,那就没关系了 www.url.com/admin/ 但是当我打电话给 www.url.com/admin/blog/new 路径当然是错误的。它需要看起来像href='../../lib/...',因为路由看起来像这样:

router.get('/admin/blog/new', isLoggedIn, function (req, res) {
    res.render('admin/blog-new', {title: 'Post Blog Entry'});
})

除了绝对路径之外,还有可能解决这个问题吗? (也许我现在是个傻瓜)

2 个答案:

答案 0 :(得分:1)

您可以将lib文件夹作为名为static的服务器,之后您可以删除相对路径。

app.use('/vendor',express.static(path.join(__dirname, 'client/vendor')));

因此,您可以在我的根目录中看到我有一个客户端文件夹,其中我将所有下载的库存储在供应商文件夹中。所以我将静态路径映射为 / vendor

现在我们可以将libs称为

<link rel="stylesheet" href="vendor/jquery-ui/themes/smoothness/jquery-ui.min.css">

答案 1 :(得分:0)

我发现,通过使用前导/,您可以通过更改路径来引用解决问题的基本路径

link(rel='stylesheet', href='/../lib/bootstrap/dist/css/bootstrap.min.css')
link(rel='stylesheet', href='/../lib/components-font-awesome/css/font-awesome.min.css')