如何使用node.js和express实现虚拟目录?

gzt*_*mas 9 node.js express

我想使用express静态服务器配置来实现静态服务器:

app.configure(function() {
    app.use(express.static(__dirname + '/public'));
});
Run Code Online (Sandbox Code Playgroud)

但我想将URL映射http://myhost/url1到目录C:\dirA\dirBhttp://myhost/url2目录C:\dirC

如何使用express.static实现?

Min*_*God 8

这应该适合你:

var serveStatic = require( "serve-static" );
app.use('/url1', serveStatic('c:\\dirA\\dirB'));
app.use('/url2', serveStatic('C:\\dirC'));
Run Code Online (Sandbox Code Playgroud)

看一下app.use()的文档.


Dan*_*del 7

根据您计划以这种方式映射的目录数量,您可以简单地为public文件夹中的这些目录创建符号链接.

在Windows中:

mklink /D c:\dirA\dirB public\url1
Run Code Online (Sandbox Code Playgroud)

在Linux或OSX中:

ln -s /dirA/dirB public/url1
Run Code Online (Sandbox Code Playgroud)

那么你的静态资产服务器应该透明地从那些目录中提供服务(我从未在Windows上测试过,但我不明白为什么它不起作用).

或者,如果您想要包含某种动态路由,您可以编写自己的中间件来替换express.static实际connect.static的内置软件.看一下connect source中的static.js,看看它是如何实现的,编写自己的变体应该相当简单.