【发布时间】:2018-08-09 04:20:00
【问题描述】:
我有两个文件夹,每个文件夹包含每个商店的不同主题。
/angularApp_v1
/angularApp_v2
我有一个中间件来找出当请求进入时应该提供哪个文件夹。示例:
-- www.storev1.com 应该去 /angularApp_v1
-- www.storev2.com 应该去 /angularApp_v2
将每个域路由到正确的 express.static 文件夹的最佳方法是什么?
编辑:
var storeMiddlware = function(req, res, next) {
getStoreTheme(req.hostname, function(response){
req.storeTheme = response.theme;
}
})
app.use(storeMiddleware);
app.use('/', express.static(req.storeTheme));
其中 req.storeTheme = 文件夹(angularApp_v1 或 angularApp_v2)
已解决:使用“serve-static”
var themeAssests = {
'v1': serveStatic('angularApp_v1'),
'v2': serveStatic('angularApp_v2')
}
app.use("/", function(req, res, next) {
themeAssests[req.storeTheme](req, res, next);
})
【问题讨论】:
-
另外你有两个不同的主机名,一个是storev1,另一个是storev2,所以它们将运行在不同的端口上,这意味着不同的节点服务器
-
那么不需要指定两个不同的文件夹,除非一个应用程序有两个不同的文件夹。
-
@zenwraight 每个文件夹是一个主题,商店可以选择哪个主题。因此它们需要托管在同一节点服务器上。数据库中有一个变量决定应为单个商店提供哪个文件夹
-
文件夹可以动态变化,因此有一个中间件可以检查数据库并获取商店使用的主题。
-
@zenwraight 我更新了我的问题以包括中间件,以及我想要完成的示例。 express.static(req.storeTheme) 是不可能的,因为 req.storeTheme 在发出请求之前没有定义。
标签: angularjs node.js express mean-stack