@romaro

Как лучше задавать пути к статическим файлам в Node?

Например, у меня в проекте есть роуты:
- project/
- - routers/
- - - regRouter.js

В regRouter.js есть обработчик для рендинга страницы:
router.get('/', function (req, res) {
    res.render('/home/nodejs/project/public/views/reg');
});


Я пока вижу 3 варианта:
1) определить глобальную переменную для корня проекта, инициализировать ее в главном файле приложения и писать что-то вроде:
res.render(__rootDir + 'public/views/reg');

2) использовать app-root-path, который придется импортировать в каждый файл роута.

3) определять переменную NODE_PATH перед запуском приложения, но почему-то кажется, что это более хрупкий способ.

Важно, что на сервере может быть несколько приложений под Node.
Какой вариант вы бы посоветовали?
  • Вопрос задан
  • 24 просмотра
Решения вопроса 1
Lynn
@Lynn
nginx, js, css
На что только народ не идёт лишь бы документацию не читать
https://expressjs.com/en/4x/api.html#res.render
The view argument is a string that is the file path of the view file to render. This can be an absolute path, or a path relative to the views setting.


https://expressjs.com/en/4x/api.html#app.set
views
String or Array
A directory or an array of directories for the application's views. If an array, the views are looked up in the order they occur in the array.
default value: process.cwd() + '/views'


Так что где-то в начале приложения надо написать app.set('views', 'public/views'), а в обработчике res.render('reg').

Всё.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы