Springブートバックエンドを持つVue.jsフロントエンド

Vue.js Frontend with a Spring Boot Backend

1. 概要

このチュートリアルでは、Spring Bootをバックエンドとして使用しながら、Vue.jsフロントエンドで単一ページをレンダリングするサンプルアプリケーションについて説明します。

また、Thymeleafを利用して情報をテンプレートに渡します。

2. スプリングブートセットアップ

アプリケーションpom.xmlは、通常のspring-boot-starter-webとともに、テンプレートレンダリングにspring-boot-starter-thymeleaf依存関係を使用します。


    org.springframework.boot
    spring-boot-starter-web
    2.0.3.RELEASE


    org.springframework.boot
    spring-boot-starter-thymeleaf
    2.0.3.RELEASE

Thymeleafはデフォルトでtemplates/でビューテンプレートを検索します。空のindex.htmlsrc/main/resources/templates/index.htmlに追加します。 次のセクションで内容を更新します。

最後に、Spring Bootコントローラーはsrc/main/javaになります。

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

このコントローラーは、model.addAttributeを使用してSpring WebModelオブジェクトを介してビューに渡されたデータを含む単一のテンプレートをレンダリングします。

以下を使用してアプリケーションを実行しましょう。

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

ここでは、CDNからVue.jsを読み込みますが、必要に応じてホストすることもできます。

Babelでブラウザーをロードして、トランスピレーション手順を実行せずにページにES6準拠のコードを記述できるようにします。

実際のアプリケーションでは、ブラウザ内のBabelを使用する代わりに、WebpackやBabeltranspilerなどのツールを使用してビルドプロセスを使用する可能性があります。

それでは、ページを保存して、mvn spring-boot:_run_コマンドを使用して再起動しましょう。 ブラウザを更新して更新を確認します。まだ何も面白くない。

次に、ユーザーインターフェースをアタッチする空のdiv要素を設定しましょう。

次に、ページでVueアプリケーションを設定します。

今何があったの? このコードは、ページにVueアプリケーションを作成します。 CSSセレクター#contentsで要素にアタッチします。

これは、ページ上の空のdiv要素を指します。 これで、Vue.jsを使用するようにアプリケーションが設定されました!

3.2. テンプレートでのデータの表示

次に、Springコントローラーから渡した ‘eventName‘属性を示すヘッダーを作成し、Thymeleafの機能を使用してレンダリングします。

Name of Event:

次に、「data'」属性をVueアプリケーションにアタッチして、単純なJSON配列であるプレーヤーデータの配列を保持しましょう。

Vueアプリは次のようになります。

これで、Vue.jsはplayersというデータ属性を認識します。

3.3. Vue.jsコンポーネントを使用したデータのレンダリング

次に、playerを1つだけレンダリングするplayer-cardという名前のVue.jsコンポーネントを作成しましょう。 Remember to register this component before creating the Vue app.

そうしないと、Vueはそれを見つけられません。

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

{{ player.description }}

` });

最後に、アプリオブジェクト内のプレーヤーのセットをループして、各プレーヤーのplayer-cardコンポーネントをレンダリングしましょう。

ここでのロジックは、v-for,と呼ばれるVueディレクティブです。これは、playersデータ属性の各プレーヤーをループし、<li>内の各playerエントリに対してplayer-cardをレンダリングします。 s要素。

v-bind:playerは、player-cardコンポーネントにplayerというプロパティが与えられ、その値が現在処理されているplayerループ変数になることを意味します。 各<li>要素を一意にするには、v-bind:keyが必要です。

一般に、player.idはすでに一意であるため、適切な選択です。

ここで、このページをリロードすると、devtoolsで生成されたHTMLマークアップを観察すると、次のようになります。

  • // contents
  • // contents

ワークフローの改善に関する注意:コードに変更を加えるたびに、アプリケーションを再起動してブラウザを更新する必要があると、すぐに面倒になります。

したがって、作業を楽にするために、Spring Bootdevtoolsと自動再起動の使用方法についてはthis articleを参照してください。

4. 結論

この簡単な記事では、バックエンドにSpring Bootを使用し、フロントエンドにVue.jsを使用してWebアプリケーションをセットアップする方法について説明しました。 このレシピは、より強力でスケーラブルなアプリケーションの基礎を形成できます。これは、このようなアプリケーションのほとんどの出発点にすぎません。

いつものように、コードサンプルはover on GitHubで見つけることができます。