const express = require('express');//Подключаем модуль
const path = require('path');//Модуль для работы с путями к файлам и папкам
const csrf = require('csurf');//CSRF - защита (Cross-Site Request Forger)
const flash = require('connect-flash');//серверные сообщения
const exphbs = require('express-handlebars');//Подключаем шаблонизатор
const db = require('mongoose'); //библиотека для mongodb
const hbs= exphbs.create({//Настройки шаблонизатора
defaultLayout: 'main',//Шаблон по умолчанию, основной, (template/layouts/main.hbs)
extname: 'hbs', //Расширение шаблонов, пользовательское. По умолчанию express-handlebars
helpers: require('./helpers/hbs-helpers')//подключаем свои операторы
});
app.engine('hbs', hbs.engine);//Подключени шаблонизатора к express, регестрируем движок
app.set('view engine', 'hbs');//Запускаем шаблонизатор, используем
app.set('views', 'template');//Указываем папку с шаблонами
app.use(express.static(path.join(__dirname,'public')));//Статические папки для хранения стилей картинок
app.use(express.urlencoded({extended: true}));
**helpers/hbs-helpers.js**
/**
* Свои операторы для шаблонов
* @type {{ifeq(*, *, *): *}}
*/
module.exports ={
ifeq(a, b, options){//Оператор сравнения
if(a.toString() === b.toString()){
return options.fn(this);//Если значения совподают
}
return options.inverse(this);//Если значения не совподают
}
};
**template/courses.hbs**
{{#if courses.length}}
{{#each courses}}
{{/each}}
{{else}}
Нет записей
{{/if}}