NodeJS. Как собрать шаблон из нескольких частей.
Всем привет! В этой статье мы рассмотрим, как создавать шаблон из нескольких частей и зачем все это нужно в NodeJS.
Представим, что у нас есть куча разных файлов шаблонов. В каждом из них есть панель навигации. Представим теперь, что мы решили изменить эту панель навигации, следовательно, нам нужно поменять ее в каждом файле. В большом проекте этих файлов может быть несколько сотен. Понятное дело, что это будет, мягко говоря, утомительно и неэффективно менять панель навигации в каждом из них. Намного удобнее будет вынести ее в отдельный файл, а затем подключать в других нужных файлах шаблонов. Тогда нам надо будет поменять только один файл с панелькой, и она сразу же поменяется во всех других автоматически. Давайте рассмотрим, как мы можем это сделать.
Для начала создадим папку с названием partials в папке views. В ней буду храниться все отдельные части нашего шаблона. В папке partials создадим файл с названием nav.ejs. В нем создадим достаточно простую структуру нашей навигации:
<nav>
<ul>
<li><a href="/">Home</a></li>
<li><a href="/contact">Contact</a></li>
</ul>
</nav>
Теперь подключим нашу навигацию к файлу profile.ejs. Сразу после тега body напишем следующее:
<% include partials/nav.ejs %>
Теперь, если вы перезагрузите сервер и обновите страницу, то увидите нашу навигацию, подключенную к файлу profile.ejs.
Давайте так же сделаем и с остальными нашими файлами. Создайте в папке views файлы index.ejs и contact.ejs, куда скопируйте весь код из файлов index.html и contact.html соответственно. Также подклчючите в этих файлах шаблонов нашу навигацию после тега body, сделав все то же самое, что и с файлом profile.ejs.
Поскольку теперь мы не просто отправляем HTML странички, а шаблоны, не забудьте в главном файле app.js поменять метод sendFile() на render() вот таким образом:
app.get('/', function(req, res) {
res.render('index');
});
app.get('/contact', function(req, res) {
res.render('contact');
});
Теперь, если вы будете переходить по страничкам на нашем сайте, то везде увидите нашу навигацию. И, если вам нужно будет внести изменения, то это надо будет сделать лишь в одном файле.
А нам этом сегодня все. Спасибо за внимание!
-
- Михаил Русаков
Комментарии (1):
В строке "<% include partials/nav.ejs %>" не правильный или устаревший синтакс. Не заработало, пока не поправил на " <%- include('partials/nav.ejs') %>" П.С. Спасибо, статьи очень помогают!
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.