0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Шаблоны сайта содержат множество внутренних ссылок, которые ведут на меню, кнопки и формы. До сих пор мы формировали эти ссылки прямо в тех местах, где они нам нужны:</p>
1
<p>Шаблоны сайта содержат множество внутренних ссылок, которые ведут на меню, кнопки и формы. До сих пор мы формировали эти ссылки прямо в тех местах, где они нам нужны:</p>
2
<p>Так же ссылки строятся и в обработчиках - например, при редиректах:</p>
2
<p>Так же ссылки строятся и в обработчиках - например, при редиректах:</p>
3
<p>В примерах выше мы формируем ссылку именно там, где хотим ее использовать. У этого способа есть свои минусы. Для примера представим, что мы решили изменить маршрут с /courses/{id} на /c/{id}. В этом случае нам придется пройтись по всем шаблонам и вручную заменить маршрут во всех ссылках. Это долго и неудобно.</p>
3
<p>В примерах выше мы формируем ссылку именно там, где хотим ее использовать. У этого способа есть свои минусы. Для примера представим, что мы решили изменить маршрут с /courses/{id} на /c/{id}. В этом случае нам придется пройтись по всем шаблонам и вручную заменить маршрут во всех ссылках. Это долго и неудобно.</p>
4
<p>А что будет, если мы решим удалить маршрут /courses/{id}? Тогда сайт продолжит работать, но все ссылки с удаленным маршрутом начнут вести на страницу 404. Не факт, что мы сразу заметим и исправим эту проблему. Будет лучше, если страницы с такими ссылками начнут выдавать ошибки. Тогда выявить подобные ссылки станет крайне просто. Для решения этой задачи придумали<strong>именованные маршруты</strong>, которые мы обсудим в этом уроке.</p>
4
<p>А что будет, если мы решим удалить маршрут /courses/{id}? Тогда сайт продолжит работать, но все ссылки с удаленным маршрутом начнут вести на страницу 404. Не факт, что мы сразу заметим и исправим эту проблему. Будет лучше, если страницы с такими ссылками начнут выдавать ошибки. Тогда выявить подобные ссылки станет крайне просто. Для решения этой задачи придумали<strong>именованные маршруты</strong>, которые мы обсудим в этом уроке.</p>
5
<h2>Как работают именованные маршруты</h2>
5
<h2>Как работают именованные маршруты</h2>
6
<p>Каждому именованному маршруту фреймворка присваивается имя, которое можно использовать при построении конкретной ссылки. В Javalin такой механизм не встроен, но его легко сымитировать. Чтобы это сделать, вручную создадим класс с описанием маршрутов:</p>
6
<p>Каждому именованному маршруту фреймворка присваивается имя, которое можно использовать при построении конкретной ссылки. В Javalin такой механизм не встроен, но его легко сымитировать. Чтобы это сделать, вручную создадим класс с описанием маршрутов:</p>
7
<p>В коде выше мы добавили методы. Теперь можно внедрить их в описание маршрутов Javalin и в шаблоны:</p>
7
<p>В коде выше мы добавили методы. Теперь можно внедрить их в описание маршрутов Javalin и в шаблоны:</p>
8
<p>Как видите, читаемость кода немного упала. Чтобы ее повысить, можно добавить комментарии над определениями маршрутов, например:</p>
8
<p>Как видите, читаемость кода немного упала. Чтобы ее повысить, можно добавить комментарии над определениями маршрутов, например:</p>
9
<p>Встраиваем в шаблон:</p>
9
<p>Встраиваем в шаблон:</p>
10
<p>Теперь ссылка формируется через вызов метода, что дает нам типобезопасность.</p>
10
<p>Теперь ссылка формируется через вызов метода, что дает нам типобезопасность.</p>