мир без Jsp. thymeleaf 2.0

3,075 views
2,767 views

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,075
On SlideShare
0
From Embeds
0
Number of Embeds
11
Actions
Shares
0
Downloads
25
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

мир без Jsp. thymeleaf 2.0

  1. 1. Мир без JSP.Thymeleaf 2.0
  2. 2. Что плохого в JSP?• 2002 год (ajax ещё не назывался ajax`ом)• Скриплеты• Невалидный фрагментированный (X)HTML• «Многобукаф»• ENVIRONMENT!• Static HTML -> JSP -> HTML
  3. 3. Идеальный серверный шаблон• Минимум усилий• Удовольствие от разработки• Совместимость с mainstream технологиями• Скорость разработки• Скорость генерации страницы• Фишечки-плюшки
  4. 4. Встречаем Thymeleaf!
  5. 5. Pros• Низкий порог входа• Здоровый Open Source + Коммьюнити• Подходит для насыщенных HTML-писем• Обрабатывает неполные документы• Мощный Expression Language
  6. 6. Pros• Интеграция Spring,Tiles2, SiteMesh, Jawr, Play 1.2 …• SAX parser + Tailored DOM + Caching• Расширяемость (кастомные теги/аттрибуты/EL)• Готов к продакшн Polish Ministry of Justice Broadleafcommerce Sahibinden
  7. 7. Cons• Непривычный синтаксис• Медленнее, чем FreeMarker и Velocity• Нет taglibs (но есть «диалекты»)• Нет автодополнения в IDE• Не лучшее решение для сложных страниц (1000+ тегов/итераций)
  8. 8. - 25 параллельных потоков- 50000 запросов на страницу- Oracle JVM 1.7.0_01- Apache Tomcat 7.0.23 - 2 Gb RAM- Linux 64 bits- Spring 3.1.0- Apache JMeter 2.6
  9. 9. Киллер фича?Естественные шаблоны!
  10. 10. Естественные шаблоны• Валидны как и результирующий документ• Синтаксис движка не ломает структуры• Шаблон одновременно и прототип• Статические = просматриваются в браузере без вебсервера!
  11. 11. JSP на «вебсервере»
  12. 12. Thymeleaf на «вебсервере»
  13. 13. JSP в браузере
  14. 14. JSP Sucks
  15. 15. Thymeleaf в браузере
  16. 16. Thymeleaf FTW!
  17. 17. Резюмируем• Быстро и удобно• Подходит для вёрстки Email• Идеально для команд, где есть прототипы• Идеально для соло-разработки шаблонов• Не silver bullet• Дружит плотно со Spring
  18. 18. Практика
  19. 19. Инклуды• th:include• th:remove• th:replaceby• th:fragment• Вычисление выражений и переменных после вставки фрагмента
  20. 20. th:include=”fragment_file ::fragment_name|[DOM_selector]
  21. 21. DOMSelector Ограниченный Xpath• /x - прямой потомок с именем x.• //x - любой потомок с именем х.• x[@z="v"] - тэг х с аттрибутом z, равным v.• x[@z1="v1" and @z2="v2"]• x[i] - i-ый тэг x.• x[@z="v"][i]
  22. 22. Статические инклуды Thymol.jsОграниченная поддержка инклудов и условных выражений
  23. 23. Стандартный диалект org.thymeleaf.messageresolver.IMessageResolver
  24. 24. Thymeleaf + Spring
  25. 25. Thymeleaf + Spring• beans, fields объекты в SpEl• Интеграция с WebFlow• Интеграция с Spring Security• Form binding (th:object)
  26. 26. Расширяемость• Dialects = JSP Taglibs + i18n org.thymeleaf.dialect.IDialect• Processors = tags/attributes org.thymeleaf.processor.Iprocessor org.thymeleaf.processor.AbstractProcessor org.thymeleaf.processor.attr.AbstractAttrProcessor org.thymeleaf.processor.element.AbstractElementProcessor
  27. 27. Pitfalls• Используйте апперкейс DOCTYPE• Эксепшн с упоминанием Lenient? => Неправильный атрибут/неймспейс• Эксепшн без номера строки? => Проблема с конфигурацией
  28. 28. ВсёMind Map Яbit.ly/jtt_thyme_mmap mailto://alexey.migutsky@gmail.com skype://aliaksei_mihutski skype://mr_mig.by @mr_mig_by

×