Рубрики
Без рубрики

Vue.js Фронтенд с бэкендом пружинного ботинка

Узнайте, как настроить веб-приложение с помощью Spring Boot и Vue.js.

Автор оригинала: baeldung.

1. Обзор

В этом уроке мы рассмотрим пример приложения, которое отображает одну страницу с Vue.js frontend, используя Spring Boot в качестве бэкенда.

Мы также будем использовать Thymeleaf для передачи информации в шаблон.

2. Установка пружинной загрузки

Приложение pom.xml использует зависимость spring-boot-starter-thymeleaf для рендеринга шаблона наряду с обычной spring-boot-starter-web :

 
    org.springframework.boot
    spring-boot-starter-web 
    2.4.0
 
 
    org.springframework.boot
    spring-boot-starter-thymeleaf 
    2.4.0

Thymeleaf по умолчанию ищет шаблоны представлений в templates/ , мы добавим пустой index.html к src/main/resources/templates/index.html . Мы обновим его содержание в следующем разделе.

Наконец, наш контроллер загрузки Spring будет находиться в src/main/java :

@Controller
public class MainController {
    @GetMapping("/")
    public String index(Model model) {
        model.addAttribute("eventName", "FIFA 2018");
        return "index";
    }
}

Этот контроллер отображает один шаблон с данными, передаваемыми в представление через объект веб-модели Spring с помощью model.AddAttribute .

Давайте запустим приложение с помощью:

mvn spring-boot:run

Перейдите к http://localhost:8080 для просмотра страницы индекса. На данный момент, конечно, он будет пуст.

Наша цель состоит в том, чтобы сделать страницу распечатанной примерно так:

Name of Event: FIFA 2018

Lionel Messi
Argentina's superstar

Christiano Ronaldo
Portugal top-ranked player

3. Визуализация данных с помощью Vue.Компонент Js

3.1. Базовая настройка шаблона

В шаблоне давайте загрузим Vue.js и Bootstrap (необязательно) для визуализации пользовательского интерфейса:

// in head tag



//  other markup

// at end of body tag


Здесь мы загружаем Vue.js с CDN, но вы также можете разместить его, если это предпочтительнее.

Мы загружаем Babel в браузере, чтобы мы могли написать на странице код, совместимый с ES6, без необходимости выполнять шаги транспиляции.

В реальном приложении вы, скорее всего, будете использовать процесс сборки с использованием таких инструментов, как Webpack и Babel transpiler, вместо использования Babel в браузере.

Теперь давайте сохраним страницу и перезапустим ее с помощью команды mvn spring-boot : run . Мы обновляем браузер, чтобы увидеть наши обновления; пока ничего интересного.

Далее, давайте настроим пустой элемент div, к которому мы прикрепим наш пользовательский интерфейс:

Затем мы настроим приложение Vue на странице:

Что только что произошло? Этот код создает приложение Vue на странице. Мы прикрепляем его к элементу с помощью селектора CSS #contents .

Это относится к пустому элементу div на странице. Теперь приложение настроено на использование Vue.js!

3.2. Отображение данных в Шаблоне

Затем давайте создадим заголовок, который показывает атрибут ” имя события “, который мы передали из Spring controller, и визуализируем его с помощью функций Thymeleaf:

Name of Event:

Теперь давайте прикрепим атрибут ‘ data’ к приложению Vue для хранения нашего массива данных плеера, который представляет собой простой JSONArray.

Наше приложение Vue теперь выглядит следующим образом:

Сейчас Vue.js знает об атрибуте данных под названием players .

3.3. Визуализация данных с помощью Vue.js Компонент

Далее, давайте создадим Vue.js компонент с именем player-card , который отображает только один player . Не забудьте зарегистрировать этот компонент перед созданием приложения Vue.

В противном случае Vue не найдет его:

Vue.component('player-card', {
    props: ['player'],
    template: `
{{ player.name }}

{{ player.description }}

` });

Наконец, давайте пройдемся по набору игроков в объекте приложения и отрисоваем компонент player-card для каждого игрока:

Логика здесь заключается в директиве Vue под названием v-for, которая будет циклически перебирать каждого игрока в атрибуте данных players и отображать карточку игрока для каждой записи player внутри элемента .

v-bind:player означает, что компоненту player-card будет присвоено свойство с именем player , значением которого будет переменная цикла player , с которой в данный момент ведется работа. v-bind:ключ необходим для того, чтобы сделать каждый элемент уникальным.

Как правило, player.id – хороший выбор, так как он уже уникален.

Теперь, если вы перезагрузите эту страницу , обратите внимание на сгенерированную HTML-разметку в devtools , и она будет выглядеть примерно так:

  • // contents
  • // contents

Примечание по улучшению рабочего процесса: необходимость перезагрузки приложения и обновления браузера при каждом внесении изменений в код быстро станет обременительной.

Поэтому, чтобы облегчить жизнь, пожалуйста, обратитесь к этой статье о том, как использовать Spring Boot devtools и автоматический перезапуск.

4. Заключение

В этой краткой статье мы рассмотрели, как настроить веб-приложение с помощью Spring Boot для бэкенда и Vue.js для интерфейса. Этот рецепт может стать основой для более мощных и масштабируемых приложений, и это всего лишь отправная точка для большинства таких приложений.

Как обычно, примеры кода можно найти на GitHub .