pug 引擎如何加载静态文件?

2016-09-08 20:22:06 +08:00
 ff1m80

node 环境下,利用 express+pug 开发一个页面,静态文件配置如下:

app.use('/static', express.static(__dirname + '/public'));

然后在 pug 模板中引入 css 文件:

link(href='/static/css/layout.css' type='text/css' rel='stylesheet')

这样的话,在开发环境下是正常的,但是当我部署到生产环境下,绑定在域名 www.aaa.com/bbb 的时候,静态文件仍然会访问 www.aaa.com/static/css/layout.css, 这种情况该怎么处理?

如果不用专门的静态服务器呢,只有三五个 css 文件不需要啊。

7130 次点击
所在节点    Node.js
7 条回复
bdbai
2016-09-08 22:47:54 +08:00
bdbai
2016-09-08 22:53:27 +08:00
额 把 /static 前面的斜杠去掉就行。
bdbai
2016-09-08 22:54:48 +08:00
@bdbai 我是说 pug 模板里的斜杠
ff1m80
2016-09-08 23:07:52 +08:00
@bdbai 去掉斜杠的话,相对目录读取的是当前文件夹下的。

不过我找到解决方法了。
在 app.js 里:
```
app.locals.assetUrl = function() { return config[env].assetHost;}
```
然后在 pug 文件里
```
link(href=assetUrl('/static/css/layout.css') type='text/css' rel='stylesheet')
```

哈哈哈,我就是看隔壁的那个 kails 学会的
ff1m80
2016-09-08 23:08:40 +08:00
囧, md 写错了
ff1m80
2016-09-08 23:11:26 +08:00
囧, assetUrl 那个函数也写错了,没有把参数加进去, 应该是 function(asset) { return config[env].assetHost + asset; }
sensui7
2016-09-10 18:09:25 +08:00
@ff1m80 我想起了被 ci 中的 site_url 支配的日子

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/304920

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX