Выбор между Thymeleaf и Angular для нового проекта MVC Spring

Я запускаю новое веб-приложение Spring Boot, и мне нужно сделать выбор о том, как реализовать интерфейс.

Мне действительно нравится структура шаблонов Thylemeaf, которые я использовал в моих последних проектах, но я оцениваю Angular (v2) как возможную альтернативу.

Я совершенно новый для клиентских MVC-фреймворков, и я хотел бы понять, есть ли какие-то рекомендации, чтобы решить, какой вариант лучше всего подходит для веб-проекта.

Я прочитал много сообщений и учебников об этом, но все они, кажется, описывают личные мнения или просто эксперименты по кодированию...

Есть ли какие-то требования к приложениям, которые объективно предлагают использовать клиентскую сторону для решения вместо серверной реализации?

Возможно ли и эффективно использовать обе технологии вместе?

Ответ 1

Тимелеаф и AngularJS не являются взаимоисключающими. Вы можете использовать их вместе, в зависимости от того, что вы пытаетесь выполнить. Если вы все написали одностраничное динамическое веб-приложение, Thymeleaf, вероятно, не нужно.

Говоря о вашем вопросе о клиентских фреймворках и серверных, я являюсь разработчиком Enterprise Software Engine, поэтому я не создаю коммерческое программное обеспечение, и мой приоритет - это меньше о том, насколько он красив (немного Bootstrap делает трюк ) и многое другое о стабильности, совместимости браузера (даже с более старыми браузерами) и ремонтопригодности. Я лично избегаю одиночной страницы, динамических веб-приложений, потому что я считаю, что кодовая база сложнее управлять в нетривиальных приложениях; по моему мнению, большая база Javascript-кода может быть медведем. Создание моих страниц в основном на стороне сервера дает мне лучшие возможности для отладки (Java собирается предоставить вам много времени на сборку, которую вы не получаете с Javascript) и более легкое ведение журнала. Я использую javascript (в основном только jquery) на стороне клиента, но, как правило, мои веб-приложения созданы для того, чтобы грамотно деградировать, если пользователь отключил JavaScript. Опять же, это внутренние, утилитарные приложения для поддержки бизнеса. У меня нет времени писать целую тезисы по этому вопросу, и есть много нюансов, которые я не покрываю, но, надеюсь, это полезно.

Если вам нужно, чтобы ваше веб-приложение больше походило на мобильное или настольное приложение, одностраничное динамическое веб-приложение с использованием фреймворка, такого как AngularJS, является одним из способов.

Ответ 2

Выбор заключается не в том, следует ли использовать одну библиотеку JavaScript или Thymeleaf, которая была бы искусственным ограничением, которое вы создали, они оба разные животные. Thymeleaf предназначен для шаблонов, JQuery - это клиентская библиотека для создания динамических страниц. Было бы разумнее выбирать между шаблонами библиотек или выбором между библиотеками JavaScript, но оба могут хорошо сочетаться.

В общем, ваши шаблоны не должны влиять на ваш JavaScript-код, некоторые люди делают шаблон своего Javascript-кода, но IMHO это ужасная идея. Вместо этого используйте Templating для замены атрибутов тегов в HTML и Javascript, чтобы сделать ваш сайт динамичным с любой выбранной вами библиотекой.

Я не уверен, что вы подразумеваете под

клиентская сторона подходит вместо реализации на стороне сервера

Но то, что я вижу сегодня, - это два разных подхода, создающих веб-приложение Microservies VS Monolith. Если вы полностью разработаете свой сайт в Thymeleaf, вы не сделаете его очень многоразовым. Netflix, Amazon, Uber и т.д. Создают службы (иногда называемые микросервисами), которые повторно используются во всей организации через REST API.

Если у вас есть только веб-сайт, реализованный в Thymeleaf, для другого приложения (думаю, мобильного) будет невозможно получить доступ к любым службам, созданным вашим приложением, тогда как если вы создадите REST API для своего приложения, вы можете продолжать использовать его повторно back-end, когда вам нужно сделать мобильное приложение или другое веб-приложение с аналогичными требованиями.

Конечно, если ваши услуги не будут повторно использоваться, это может не иметь значения для вас, и вы можете быть очень опытными в том, чтобы делать что-то определенным образом, хотя и не являетесь наиболее многоразовыми, конечно, мы не всегда создаем следующий Amazon. Но я по-прежнему считаю, что хорошая идея - следовать лучшим практикам, даже если это просто для того, чтобы лучше делать что-то определенным образом.