Возможно ли установить корень файловой системы и / или корень документа в некоторый подкаталог файловой системы?

#node.js #filesystems #document-root

#node.js #файловые системы #document-root

Вопрос:

Я хотел бы знать, возможно ли указать подкаталог для корня файловой системы или корня документа для запросов статических ресурсов (если есть какое-либо такое различие) в node.js.

Я знаю, что могу сделать это путем объединения абсолютного пути от корня, но мне интересно, можно ли это сделать на уровне всего приложения.

Я не нашел ничего в документации, что поддерживало бы это, но, возможно, я упускаю это из виду.


РЕДАКТИРОВАТЬ: Я должен упомянуть, что на данный момент я не заинтересован в использовании сторонней библиотеки.

Ответ №1:

Ознакомьтесь с expressjs

http://expressjs.com/guide.html#configuration

В частности

 app.use(express.static(__dirname   '/public', { maxAge: oneYear }));
  

Express / connect имеет «статическое» промежуточное программное обеспечение для этого варианта использования. Существуют и другие пакеты меньшего размера только для статического обслуживания файлов, однако express хорош и хорошо поддерживается.

Комментарии:

1. Спасибо за ваш ответ, но я должен был указать, что я предпочитаю делать это без сторонней библиотеки. Я хотел бы знать, возможно ли это напрямую в node.js. Если нет, я бы предположил, что express просто выполняет такую же конкатенацию.

2. github.com/senchalabs/connect/blob/master/lib/middleware/…

3. @Patrick поскольку код доступен на github, то да, это возможно. Главное — знать, как правильно обслуживать ресурсы. Лучшим вариантом было бы взглянуть на что-то вроде nginx, который я собираюсь изучить в эти выходные для своего собственного сервера.

4. @drachenstern: Я использовал nginx. Понравилось намного больше, чем Apache. Что вы имеете в виду, говоря о том, что код доступен на github? Вы говорите о Express?

Ответ №2:

API не позволяет вам делать то, о чем вы просите напрямую. Вам нужно будет использовать объединение строк.

Комментарии:

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

Ответ №3:

Я попробовал следующий скрипт с nodejs и работает хорошо. для обслуживания используется текущий путь в качестве корня документа.

app.js

 var http = require('http');
var express = require('express');
var app = express();
app.use(express.static('./'));
var server = http.createServer(app);
server.listen(8080,'127.0.0.1',function() {
    console.log('listen to 127.0.0.1:8080');
});  

ссылка здесь: http://expressjs.com/starter/static-files.html