Какова цель шаблонизаторов в Java? - PullRequest
2 голосов
/ 01 ноября 2019

Я разработчик Android и около двух лет, а недавно я думал о создании веб-приложений. Итак, я начал исследовать весеннюю загрузку, и все отлично. Затем я наткнулся на то, что называется движком шаблонов (thymeleaf), который по определению отделяет ваш код от представления.

Что меня смущает, так как у внутреннего сервера может быть html? должна ли презентация обрабатываться html, css и javascript во внешнем интерфейсе? Я даже видел учебники, где они фактически вводят HTML-код в своем контроллере в качестве возвращаемых значений.

Насколько я понимаю, внутренний сервер предоставляет API-интерфейсы для использования внешним интерфейсом с помощью AJAX, а внешний интерфейс будет манипулировать этими данными и отображать информацию на экране. Почему внутренний сервер предоставляет HTML-код?

Спасибо

Ответы [ 4 ]

7 голосов
/ 01 ноября 2019

интерфейс будет манипулировать этими данными

Какой интерфейс? Вы имеете в виду код JavaScript на странице HTML? Откуда это пришло? Ах да, сервер .

Это сервер, который обслуживает клиентские HTML-страницы, а также любые файлы .js и .css.

Сервер может предоставлять статические страницы, и все, что динамически обрабатывается JavaScript. Или сервер может динамически построить HTML-страницу, используя ... как вы уже догадались ... механизм шаблонов.

Как правило, вы не хотите JavaScriptизначально создать страницу, просто использовать JavaScript для обработки любого динамического поведения. Некоторые страницы даже не нуждаются в динамическом поведении.

Если, конечно, вы не думаете о одностраничных приложениях (SPA), где есть только одна корневая HTML-страница, и всеelse построен на стороне клиента с вызовами JavaScript и AJAX, но большинство веб-приложений не являются SPA.

0 голосов
/ 01 ноября 2019

Что меня смущает, так как у внутреннего сервера может быть html?

«Бэкэнд» должен иметь HTML, потому что это то, что доставляется и обрабатывается клиентом.

Возможно, что задняя частьend "server" - это просто CDN, доставляющий, скажем, HTML / JS SPA, но все еще что-то доставляет контент в браузер.

При этом серверный рендеринг по-прежнемуВ последнее время приложение React может выполнить первоначальный рендеринг на сервере, поэтому клиент снова получает страницу, отображенную как с HTML, так и с ассоциированными данными, и затем начинает действовать как обычныйSPA.

Насколько я понимаю, внутренний сервер предоставляет API-интерфейсы для использования внешним интерфейсом с помощью AJAX, а внешний интерфейс будет манипулировать этими данными и отображать информацию на экране. Почему внутренний сервер предоставляет HTML-код? ?

Поскольку что-то должно запускать JS для доступа к этим API.

Немного истории:

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

0 голосов
/ 01 ноября 2019

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

Но так было не всегда, и некоторые фреймворки все еще не строят все на небольших запросах. Spring в Java или Symfony в PHP являются MVC Frameworks и используют шаблоны для создания страниц. Это может показаться немного устаревшим, но все еще есть много веб-сайтов, использующих это.

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

С Java и Spring я просто использовал JSP, я не знаю тимилиста. Просто используйте то, что вам нравится, и, возможно, то, что больше всего поддерживается / задокументировано.

И создание таких сайтов не означает, что вы не можете использовать AJAX, но если вы используете шаблоны, вам нужно подумать о том, что имеет смысл.

0 голосов
/ 01 ноября 2019

Thymeleaf заменяет JSP, предоставляя HTML-страницы с использованием шаблонизатора. Контроллер запрашивает файл HTML, и Spring Boot предоставляет этот шаблон после построения его с использованием предоставленной модели.

Thymeleaf отлично подходит, поскольку позволяет перестраивать шаблоны на лету. Допустим, например, что вы показываете пользователям точки на них на передней панели, но, возможно, точки увеличиваются или уменьшаются.

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

@RequestMapping(...)
public String request(Model model) {
    model.put("points", 5);
    return "my-template.html"
}

Затем используйте язык Thymeleaf, чтобы предоставить свой объект в файл HTML, который будетобрабатывается в двигателе во время работы.

<html..>
    <head>...</head>

    <body>
    <h1 th:text="${points}"></h1>
</html>

Шаблонный движок Spring Boots построит это в фоновом режиме и представит его пользователю, но покажет фактические баллы конечному пользователю! Надеюсь, это поможет немного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...