Как я могу реализовать виртуальные каталоги с помощью node.js и Express?

Я хочу использовать экспресс-статическую конфигурацию сервера для реализации статического сервера:

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

Но я хочу сопоставить URL http://myhost/url1 в каталог C:\dirA\dirB а также http://myhost/url2 в каталог C:\dirC

Как это можно реализовать с помощью express.static?

2 ответа

Решение

В зависимости от того, сколько каталогов вы планируете отображать таким образом, вы можете просто создать символические ссылки для этих каталогов в своем public папка.

В Windows:

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

В Linux или OSX:

ln -s /dirA/dirB public/url1

Тогда ваш сервер статических ресурсов должен прозрачно обслуживать эти каталоги (я никогда не тестировал на Windows, но не понимаю, почему он не будет работать).

В качестве альтернативы, если вы хотите включить какую-то динамическую маршрутизацию, вы можете написать собственное промежуточное программное обеспечение для замены express.static что на самом деле connect.static под капотом. Взгляните на static.js в источнике соединения и посмотрите, как он реализован, написать свой вариант будет довольно просто.

Это должно работать для вас:

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

Посмотрите документацию для app.use ().

Другие вопросы по тегам