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