#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