2012-05-16 8 views
8

Ich möchte für die Implementierung eines statischen Server der ausdrücklichen statischen Serverkonfiguration verwenden:Wie kann ich virtuelle Verzeichnisse mit node.js implementieren und ausdrücken?

app.configure(function() { 
    app.use(express.static(__dirname + '/public')); 
}); 

Aber ich will C:\dirC

die URL http://myhost/url1 zum Verzeichnis C:\dirA\dirB und http://myhost/url2 in das Verzeichnis abzubilden Wie kann es implementiert werden express.static?

Antwort

5

Je nachdem, wie viele Verzeichnisse Sie auf diese Weise mappen möchten, können Sie einfach Symlinks für diese Verzeichnisse in Ihrem Ordner public erstellen.

In Windows:

mklink /D c:\dirA\dirB public\url1 

In Linux oder OSX:

ln -s /dirA/dirB public/url1 

Dann Ihre statischen Vermögenswerte Server aus diesen Verzeichnissen transparent dienen sollten (ich habe noch nie auf Windows getestet, aber ich weiß nicht sehen, warum es nicht funktionieren würde).

Alternativ, wenn Sie eine Art von dynamischem Routing enthalten möchten, könnten Sie Ihre eigene Middleware schreiben, um express.static zu ersetzen, die eigentlich connect.static unter der Haube ist. Werfen Sie einen Blick auf static.js in der connect source und sehen, wie es implementiert ist, sollte es ziemlich einfach sein, Ihre eigene Variante zu schreiben.

7

Dies sollte für Sie arbeiten:

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

Werfen Sie einen Blick auf die Dokumentation für app.use().

+0

Dies ist eine viel einfachere und effizientere Antwort als die akzeptierte. – havlock

Verwandte Themen