При настройке механизма просмотра в моем проекте; Я использовал этот фрагмент кода, и приложение отлично работает.
// configurations for the view engine
app.set('views', './views');
app.set('view engine', 'pug');
Однако я видел, что в учебниках используется другой подход, когда они прикрепляют к нему «__dirName». Я не очень хорошо разбираюсь в экспрессе и в том, как он работает, поэтому мне хотелось бы узнать функциональность фрагмента кода ниже. Пожалуйста, объясните мне это, чтобы я мог понять применимость.
// configurations for the view engine
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


это 2 разные вещи вместе взятые..
app.set('view engine', 'pug'); используется при настройке механизма просмотра. Это установит тип шаблона представления.app.set('views', path.join(__dirname, 'views')); используется, когда у вас есть файлы pub для рендеринга из бэкенда на основе маршрутов.Рассмотрим случай,
У вас есть файлы pug в следующем порядке в вашем каталоге:
/views/index.pug
/views/about.pug
здесь views — имя папки, а index.pug и about.pug — файлы.
вы хотите отобразить их как для маршрутов соответственно: / и /about
В то время,
Вы можете использовать app.set('views', path.join(__dirname, 'views'));, чтобы все ваши представления отображались из папки views. (учитывайте: __dirname, 'views')
поэтому вы можете написать что-то вроде этого:
app.get('/', (req,res) => {
res.render('index')
})
app.get('/about', (req,res) => {
res.render('about')
})
поэтому теперь код автоматически ищет файл index с расширением .pug, присутствующим в этом месте: __dirname, 'views'
Надеюсь, этот ответ поможет!! Не стесняйтесь комментировать, если у вас возникнут какие-либо сомнения, а также посмотрите блоги express.js.
app.set('view engine', 'pug'); устанавливает мопса в качестве механизма просмотра. Код для его установки одинаков для обоих приведенных вами примеров.
Путь, который изменяется (app.set('views', './views');), — это код, который указывает, в каком каталоге искать файлы шаблона при отображении представления.
__dirname — это каталог, в котором находится модуль JavaScript (например, server.js). path.join используется для его объединения со строкой views, чтобы предоставить вам подкаталог с именем views в каталоге server.js.
Если у вас его нет, то у вас есть относительный путь, и он будет вычисляться из текущего рабочего каталога.
Если бы вы были в /home/users/you/project/ и набрали node server.js, то он искал бы просмотры в /home/users/you/project/views
Однако, если бы вы были в /home/users/you/ и набрали node project/server.js, то он искал бы представления в /home/users/you/views (и, вероятно, не нашел бы их, потому что вы бы поместили их в свой проект!).
Короче говоря, если вы не используете __dirname, ваш код будет ломаться в зависимости от того, из какого каталога вы его запускаете.
Используйте подход __dirname.