ホームページデータの動的化

HTMLHTMLBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

このプロジェクトでは、Vue.js を使ってホームページのデータを動的に表示する方法を学びます。このプロジェクトは、JSON ファイルからデータを取得し、Vue.js コンポーネントでレンダリングするプロセスを理解するのに役立ちます。

👀 プレビュー

Vuejs homepage preview

🎯 タスク

このプロジェクトでは、以下のことを学びます。

  • Axios を使ってホームページの投稿一覧データを要求し、List.vueコンポーネントにバインドする方法。
  • ホームページのレイアウトスタイルとエフェクトを実装して、提供されたデザインに合わせる方法。

🏆 成果

このプロジェクトを完了すると、以下のことができるようになります。

  • JSON ファイルからデータを取得するために Axios を使う。
  • 取得したデータを Vue.js コンポーネントにバインドし、テンプレートでレンダリングする。
  • 特定のデザインに合わせてコンポーネントをスタイリッシュにする。
  • さまざまな Vue.js コンポーネントを統合して、完全なホームページを作成する。

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL html(("HTML")) -.-> html/BasicStructureGroup(["Basic Structure"]) html(("HTML")) -.-> html/LayoutandSectioningGroup(["Layout and Sectioning"]) html(("HTML")) -.-> html/MultimediaandGraphicsGroup(["Multimedia and Graphics"]) html(("HTML")) -.-> html/AdvancedElementsGroup(["Advanced Elements"]) html/BasicStructureGroup -.-> html/basic_elems("Basic Elements") html/BasicStructureGroup -.-> html/head_elems("Head Elements") html/LayoutandSectioningGroup -.-> html/layout("Layout Elements") html/MultimediaandGraphicsGroup -.-> html/multimedia("Multimedia Elements") html/AdvancedElementsGroup -.-> html/inter_elems("Interactive and Dynamic Elements") subgraph Lab Skills html/basic_elems -.-> lab-445739{{"ホームページデータの動的化"}} html/head_elems -.-> lab-445739{{"ホームページデータの動的化"}} html/layout -.-> lab-445739{{"ホームページデータの動的化"}} html/multimedia -.-> lab-445739{{"ホームページデータの動的化"}} html/inter_elems -.-> lab-445739{{"ホームページデータの動的化"}} end

プロジェクト構造をセットアップする

このステップでは、プロジェクトファイルと構造をセットアップします。以下の手順に従ってこのステップを完了しましょう。

プロジェクトフォルダを開きます。ディレクトリ構造は以下の通りです。

├── public
│   ├── static
│   	 ├── data
│   	 	  ├── list.json
│   	 ├── images
│   ├── favicon.ico
│   ├── index.html
├── src
│   ├── assets
│   ├── components
│   	 ├── Header.vue
│   	 ├── List.vue
│   	 ├── Recommend.vue
│   ├── router
│   ├── views
│   	 ├── Home.vue
│   ├── App.vue
│   ├── main.js
└── package-lock.json
└── package.json
└── README.md

その中で:

  • components/List.vue は、このチャレンジで追加する記事一覧コンポーネントです。
  • public/static/data/list.json は、記事一覧を取得するデータファイルです。
  • public/static/images は、記事一覧に使用する画像ファイルです。

次に、ターミナルで npm install コマンドを使用して依存関係をダウンロードし、依存関係のダウンロードが完了したら npm run serve コマンドを使用してプロジェクトを起動します。

プロジェクトが正常に起動したら、「Web 8080」をクリックしてブラウザでプレビューします。ページの実行結果は以下の画像に示されています。

Image Description

一覧表示機能の完成

このステップでは、axios を使ってホームページの投稿一覧データを要求し、List.vueコンポーネントにバインドする方法を学びます。

  1. src/componentsフォルダにあるList.vueファイルを開きます。
  2. <script>の下でaxiosライブラリをインポートします:
// TODO
import axios from "axios";
  1. data()関数の中で、一覧データを格納するdataListプロパティを定義します:
data() {
  return {
    dataList: []
  };
}
  1. created()ライフサイクルフックの中で、一覧データを取得するためのgetList()メソッドを呼び出します:
created() {
  this.getList();
}
  1. getList()メソッドを実装して、public/static/data/list.jsonファイルからデータを取得します:
methods: {
  getList() {
    axios.get("./static/data/list.json").then((res) => {
      this.dataList = res.data.data.listInfo;
    });
  }
}
  1. <script>内の完成したコードは以下の通りです:
<script>
// TODO
import axios from "axios";
export default {
  data() {
    return {
      dataList: []
    };
  },
  created() {
    this.getList();
  },
  methods: {
    getList() {
      axios.get("./static/data/list.json").then((res) => {
        this.dataList = res.data.data.listInfo;
      });
    }
  }
};
</script>
  1. テンプレートでは、v-forディレクティブを使って一覧項目をレンダリングします:
<template>
  <div class="list">
    <!-- TODO -->
    <div class="list-item" v-for="item in dataList" :key="item.id">
      <img class="list-pic" :src="item.imgUrl" />
      <div class="list-info">
        <p class="title">{{ item.title }}</p>
        <p class="desc">{{ item.desc }}</p>
      </div>
    </div>
  </div>
</template>

このステップでは、ホームページの投稿一覧データがpublic/static/data/list.jsonファイルから取得され、List.vueコンポーネントにバインドされることが保証されます。

これらの手順に従うことで、public/static/data/list.jsonファイルからデータを取得し、望ましいレイアウトで一覧項目をレンダリングするなど、ホームページデータの動的化を完了しました。

完成した結果は以下の通りです:

Completed Effect
✨ 解答を確認して練習

まとめ

おめでとうございます!このプロジェクトを完了しました。実力を向上させるために、LabEx でさらに多くの実験を行って練習してください。