Как правильно передавать урлы в шаблонизатор при серверном рендеринге?
Разрабатываю сайт на базе express, без использования фронтенд-фреймоврков. Неожиданно застопорился на довольно простом моменте. Поскольку у меня серверный рендеринг, чтобы отдать страницу пользователю, я вызываю метод res.render, в который передаю шаблон и объект, который содержит значения для подстановок. Шаблонизатор nunjucks.
В шаблонах есть плейсходеры для статических урлов (всякие пункты меню и т.д.), выгдядят примерно так:
<a href="{{ links.auth.signup }}" class="_btnReg __btnReg">{{ static.signup }}</a>
То есть при запуске приложения я предполагаю создавать глобальный freeze-объект urls, который будет содержать все урлы, сортированные по модулям. Например:
links: {
auth: {
signup: '/signup',
}
}
Этот объект со временем может разрастись до нескольких сотен урлов.
Соответственно, при каждом вызове res.render, я планирую инклюдить его в общий список плейсхолдеров. Без какой-либо фильтрации, тупо все урлы проекта.
Из альтернативных вариантов я вижу только два:
- вручную прописывать урлы в шаблоне;
- подставлять урлы на стадии сборки шаблонов вебпаком, что как бы выносит часть бизнес-логики в сборщик и тоже не радует.
Можно ли оптимизировать мой подход? Например, я задумываюсь о фильтрации, чтобы передавать в шаблон только те статические ссылки, которые есть на странице, но не понимаю, как подступиться к этому функционалу, да и стоит ли игра свеч.
В общем, будет интересно узнать, как решается такая задача в более-менее серьезных проектах.