node.js - 如何将 express.static() 与基于 URL 的目录路径一起使用?
问题描述
我正在制作一项涉及用户获得免费子域的系统的服务,例如archiebaer.blahblahblah.demo
,我有一个功能来获取siteconf()
包含名为主题的密钥的站点配置文件()。我想archiebaer.blahblahblah.demo/theme-static/style.css
用来express.static()
提供基于该主题键的文件夹。
例如。app.get('/theme-static', express.static("themes/ABC/theme-static"));
其中 ABC 是主题名称。
示例场景:johnsmith
并且archiebaer
都是用户。John 的配置文件看起来像这样:{theme:'retro'}
,而 Archie 的配置文件是{theme:'slate'}
. 您可以使用siteconf(req)
. 当我访问/theme-static/style.css
Archie 的网站时,我应该得到文件~/projectfolder/themes/slate/style.css
,并且在 John's: 上~/projectfolder/themes/retro/style.css
。
我假设代码看起来像这样:
app.get('/theme-static', function (req, res) {
res.send(express.static('themes/' + siteconf(req).theme + '/theme-static/'));
});
解决方案
你可以简单地使用类似的东西:
app.use("/theme-static", express.static(path.join(__dirname, "pathToFolder")));
如果文件不存在,express 将为您处理错误。
推荐阅读
- google-apps-script - Google SlidesApp:复制 Google 幻灯片形状并维护“溢出时缩小文本”属性
- firefox - Firefox 未通过用户身份验证证书
- python - 在一个异步函数返回 True 后终止事件循环
- javascript - 如何在html页面中打印时添加页码页眉和页脚而不影响其他内容
- docker - 在 Docker 中运行的 Selenium webDriver 未打开 Chrome
- python - Python不完整的whois结果
- visual-studio-code - 在一行中完成代码折叠(并始终保持折叠标志可见)
- java - 如何在以下用例中减少样板代码
- c++ - 重载移位,因此它支持链接,也应该与 cout 一起使用
- azure-devops - 获取当前时间戳并与 yml 文件中的字符串连接