Я збираюся вибрати спосіб упорядкування свого перегляду (з spring-mvc, але це не має великого значення)
Наскільки я бачу, існує 6 варіантів (хоча вони не взаємовиключні):
- Плитка
- Сітемеш
- Фрімаркер
- Швидкість
<jsp:include>
<%@ include file="..">
Плитки та Сітемеш можна згрупувати; так само як Freemarker і Velocity . Який із них у кожній групі використовувати, не є предметом цієї дискусії, про це є достатньо питань та дискусій.
Це цікаве читання , але не може переконати мене використовувати плитку.
Моє запитання - що дають ці фреймворки, які неможливо зробити належним чином з <@ include file="..">
JSTL. Основні моменти (деякі взяті зі статті):
Включаючи частини сторінок, такі як верхній і нижній колонтитули, немає різниці між:
<%@ include file="header.jsp" %>
і
<tiles:insert page="header.jsp" />
Визначення параметрів у заголовку - як заголовок, метатеги тощо. Це дуже важливо, особливо з точки зору SEO. За допомогою параметрів шаблонування ви можете просто визначити заповнювач, який повинна визначити кожна сторінка. Але так ви можете в jsp з JSTL , використовуючи
<c:set>
(на включній сторінці) та<c:out>
(на включеній сторінці)Реорганізація макета - якщо ви хочете перемістити макет над меню або поле входу над іншою бічною панеллю. Якщо включення сторінок (з jsp) не добре організовано, вам може знадобитися змінити кожну окрему сторінку в таких випадках. Але якщо ваш макет не надто складний, і ви поміщаєте загальні речі у верхній / нижній колонтитул, турбуватися нема про що.
Зв'язок між загальними компонентами та конкретним вмістом - я не знаходжу проблеми з цим. Якщо ви хочете повторно використати якийсь фрагмент, перемістіть його на сторінку, яка не містить жодного верхнього / нижнього колонтитула, та додайте його туди, де це потрібно.
Ефективність -
<%@ include file="file.jsp" %>
ефективніша за будь-що інше, оскільки вона компілюється один раз. Усі інші параметри аналізуються / виконуються багато разів.Складність - для всіх рішень, що не є jsp, потрібні додаткові файли xml, додаткові компоненти, конфігурації попереднього процесора і т. Д. Це одночасно і крива навчання, і введення більшої кількості потенційних точок відмови. Крім того, це робить підтримку та зміни більш втомливими - вам потрібно перевірити низку файлів / конфігурацій, щоб зрозуміти, що відбувається.
Заповнювачі - чи швидкість / безкоштовний маркер дають щось більше, ніж JSTL? У JSTL ви вставляєте заповнювач і використовуєте модель (розміщену контролерами в запиті або сеансі) для заповнення цих заповнювачів.
Отже, переконайте мене, що я повинен використовувати будь-який із зазначених вище фреймворків замість / на додаток до простого JSP.