バックエンドデータを取得するためのVue Elementフロントエンドアプリケーション開発

バックエンドデータを取得するためのVue Elementフロントエンドアプリケーション開発

概要

前回のエッセイ「ステップバイステップのVUE + Elementフロントエンドアプリケーション開発:動的メニューとルートの関連処理」では、Vue + Element統合フレームワークで動的メニューと動的ルートの処理が実装され、ユーザーロールに対応するメニューに応じてローカルルートのフィルタリングとバインディングを実現できることを紹介しました。メニューが正常に完成したら、ページ機能をさらに開発する必要があります。このエッセイでは、バックエンドデータを取得した後に製品情報ページを処理するケースを紹介します。

1. バックエンドデータの取得と処理

フロントエンドとバックエンドの境界は非常に明確です。フロントエンドは、ネットワークを介して対応する JSON を取得することで、フロントエンド アプリケーションを構築できます。

Vue.config.js の設定情報を通じて、以下に示すように、Proxy がローカルの Mock データを処理するか、実際のバックエンド データを処理するかを指定できます。

ドメイン間でデータをリクエストし、設定ファイルにプロキシを設定する必要があります。vue-cli3 プロジェクトの場合、vue.config.js に設定を記述する必要があります。

操作データ用の API クラス ファイルをいくつか作成しました。各 API 名は、特定の業務のリスト要求、単一要求、追加、削除、変更など、業務の集中処理に対応しており、これらはすべて 1 つの API クラスにカプセル化できます。

次に、主にデータ要求を実装するために axios を単純にカプセル化する要求補助クラスを使用して、product.js などの対応するビジネス API アクセス クラスで要求ロジックを定義します。

次のステップは、src/views/productディレクトリにビューファイルを定義することです。これはページファイルであり、通常のVUEのいくつかの部分を含みます。

<テンプレート>
  
</テンプレート>

<スクリプト>
エクスポートデフォルト{

}
</スクリプト>

<スタイル>

</スタイル>

<template> 内の部分はインターフェース要素部分であり、ここに要素インターフェース コンポーネントなどの関連するインターフェース コンポーネントやその他のコンテンツを追加できます。

その中で、<script> は Vue スクリプトのインタラクティブな部分であり、多くの処理ロジックと対応するモーダル オブジェクト情報をカプセル化します。API クラスを呼び出してデータにアクセスする前に、次に示すように、対応する API クラス ファイルを導入する必要があることがよくあります。

'@/api/product' から { GetTopBanners, GetProductList } をインポートします。

その中で、<style> は関連するスタイルを定義します。

Vue のスクリプト部分を紹介する前に、VUE のスクリプト関連の内容とそのライフサイクルについてはすでに理解されていると思います。スクリプト部分の内容は次のとおりです。

<スクリプト>
エクスポートデフォルト{
  データ() {
    戻る {};
  },
  メソッド: {
    // コンポーネントメソッド},
  時計:
    // watch は 1 つのデータが複数のデータに影響を与えるシナリオの処理に適しています},
  計算: {
    // computed は、1 つのデータが複数のデータによって影響を受けるシナリオの処理に適しています},
  beforeCreate: 関数() {
    // インスタンスの初期化後、データ オブザーバーとイベント/ウォッチャーの構成前に呼び出されます。
  },
  作成: 関数() {
    // インスタンスが作成された後に呼び出されます。このステップでは、インスタンスはデータ オブザーバー、プロパティとメソッドの操作、およびウォッチ/イベント コールバックの構成を完了しています。ただし、マウント フェーズはまだ開始されておらず、$el プロパティは現在表示されません。
  },
  マウント前: 関数() {
    // マウント開始前に呼び出されます。関連するレンダリング関数が初めて呼び出されます。
  },
  マウント: 関数() {
    // コンパイルされた HTML がページにマウントされた後にイベント フックが実行されます。// el は新しく作成された vm.$el に置き換えられ、インスタンスにマウントされた後にフックが呼び出されます。
    // このフック関数は通常、データ初期化用のデータを取得するためにいくつかの Ajax リクエストを実行します。console.log("Home done");
  },
  beforeUpdate: 関数() {
    // 仮想 DOM が再レンダリングされパッチが適用される前に、データが更新されたときに呼び出されます。 このフックでさらに状態を変更することができますが、追加の再レンダリングはトリガーされません。
  },
  更新: 関数() {
    // このフックは、データの変更により仮想 DOM が再レンダリングされ、パッチが適用された後に呼び出されます。
    // このフックが呼び出されると、コンポーネントの DOM はすでに更新されているため、DOM に依存する操作を実行できるようになります。ただし、ほとんどの場合、この期間中に状態を変更することは避けてください。無限更新ループが発生する可能性があります。
    // このフックはサーバー側のレンダリング中には呼び出されません。
  },
  beforeDestroy: 関数() {
    // インスタンスが破棄される前に呼び出されます。この段階では、インスタンスはまだ完全に使用可能です。
  },
  破棄: 関数() {
    // Vue インスタンスが破棄された後に呼び出されます。呼び出し後、Vue インスタンスによって指し示されるすべてのものがバインド解除され、すべてのイベント リスナーが削除され、すべての子インスタンスが破棄されます。 このフックはサーバー側のレンダリング中には呼び出されません。
  }
};
</スクリプト>

主な内容は次のとおりです。

ページ全体のモーダルオブジェクトまたは属性を定義するために使用されるデータ。

さまざまな処理方法を定義するために使用される方法

計算され、計算されたツリーを定義するために使用される

作成済み、要素を作成したがマウントされていない場合に使用されます

マウントされたとき、ページがマウントされているとき

2. インターフェース表示処理

例えば、インターフェースコンテンツを表示したい場合、製品の写真や製品情報の紹介を表示する必要がある。

次に、ページが読み込まれる前にデータ バインディング処理を実装するために、関連するデータ テンプレートと対応する処理メソッドを定義する必要があります。

エクスポートデフォルト{
  データ() {
    戻る {
      アクティブ名: 'すべて',
      currentDate: 新しい日付()、
      バナー: [],
      製品リスト: [],
      ページ情報: {
        ページインデックス: 1,
        ページサイズ: 10,
        合計: 0
      },
      製品タイプ: 'すべて'
    };
  },
  作成された() {
    this.loadbanners()
    this.getlist()
  },

インターフェース部分では、Element のインターフェース コンポーネントを使用して、以下に示すように回転灯の表示効果を定義します。

テンプレート モジュールで定義されているインターフェース要素を以下に示します。

ここでの el-carousel は Element コンポーネントのカルーセルであり、v-for="iteminbanners" は Vue の処理構文であり、データモデル内のデータをループで処理し、複数の画像を 1 つずつ表示することで、カルーセルの効果を実現します。

リスト表示では、コンテンツを表示するためにカードを使用し、データを表示するためにページング方式を使用します。

カテゴリーボタン部分のコードは以下のようになります。

<el-row :gutter="20" style="padding:20px">
  <el-button type="primary" icon="el-icon-search" :plain="producttype !='all'" @click="handleClick($event, 'all')">すべて</el-button>
  <el-button type="success" icon="el-icon-search" :plain="producttype !='1'" @click="handleClick($event, '1')">フレームワーク製品</el-button>
  <el-button type="warning" icon="el-icon-search" :plain="producttype !='2'" @click="handleClick($event, '2')">ソフトウェア製品</el-button>
  <el-button type="danger" icon="el-icon-search" :plain="producttype !='3'" @click="handleClick($event, '3')">開発コンポーネント</el-button>
</el-row>

主なことは、データ属性に応じていくつかのスタイルを制御し、対応するクリック イベントに応答することです。

各カードの内容を紹介し、デモコードを下記に示します。

<el-col :span="4"><div class="grid-content bg-purple" />
<el-card クラス="ボックスカード">
  <img src="https://shadow.elemecdn.com/app/element/hamburger.9cf7b091-55e9-11e9-a976-7f4d0b07eef6.png" class="画像">
  <div style="padding: 14px;">
    <span>おいしいハンバーガー</span>
    <div class="bottom clearfix">
      <time class="time">価格:200円</time>
      <el-button type="text" class="button" @click="loadbanners()">アクションボタン</el-button>
    </div>
  </div>
</el-card>
</el-col>

ただし、実際に取得した動的なデータに応じてバインドする必要があるため、製品リストを表示するには、上記の v-for ループと同様に、ループで処理する必要があります。

<el-col v-for="(item, index) in productlist" :key="index" :span="4" style="min-width:250px">
<div class="grid-content bg-purple">
  <el-card クラス="ボックスカード">
    <img :src="item.Picture" class="image" style="width:200px;height:200px">
    <div style="padding: 14px;">
      <span>{{ item.ProductName }}</span>
      <div class="bottom clearfix">
        <!-- <time class="time">価格: ¥{{ item.Price }}</time> -->
        <el-button type="text" class="button">操作ボタン</el-button>
      </div>
    </div>
  </el-card>
</div>
</el-col>

データを効率的に要求して表示するには、ページング コンポーネントを使用して、データに対してページング クエリ処理を実行する必要もあります。ページング コンポーネント インターフェイスの定義コードは次のとおりです。

 <el-ページネーション
      背景
      レイアウト="前へ、ページャ、次へ"
      :ページサイズ="[10,20,50]"
      :total="ページ情報合計"
      :current-page="ページ情報.ページインデックス"
      :page-size="ページ情報.ページサイズ"
      @size-change="ハンドルサイズ変更"
      @current-change="現在の変更を処理する"
    />

データ ページングを実装するには、ページング クエリのニーズを満たすために、現在のページ番号、ページあたりのデータのサイズ、データ レコードの合計数など、いくつかの変数を定義する必要があります。

定義した getList メソッドは次のとおりです。

取得リスト() {
      //ページングクエリ条件を構築 var param = {
        タイプ: this.producttype === 'all' ? '' : this.producttype,
        ページインデックス: this.pageinfo.pageindex、
        ページサイズ: this.pageinfo.pagesize
      };

      this.listLoading = true
      // データクエリ要求を開始し、ローカルデータの値を設定します GetProductList(param).then(data => {
        this.productlist = データリスト
        this.pageinfo.total = データ.total_count
        this.listLoading = false
      })
    },

さらに、データを照会するためのいくつかのメソッドが定義されています。

// カテゴリをクリックすると、クエリhandleClick(e, type) {
      // console.log(e, タイプ);

      this.producttype = タイプ
      this.pageinfo.pageindex = 1;

      this.getlist()
    },
    // ページ数の変更後のクエリ処理 handleSizeChange(val) {
      console.log(`ページあたり${val}項目`);
      this.pageinfo.pagesize = val;
      this.getlist()
    },
    // ページ番号変更後のクエリ処理 handleCurrentChange(val) {
      console.log(`現在のページ: ${val}`);
      this.pageinfo.pageindex = val;
      this.getlist()
    }

上記は、Element のインターフェース コンポーネントと Vue のメソッドを使用して、データのページング クエリ要求を実行する基本的な操作です。この簡単なケースを通じて、いくつかの基本的な Element インターフェース コンポーネントの使用方法、および Data/Method などのコンテンツを理解し、クロスドメイン API 要求をカプセル化して呼び出し、インターフェース上でバックエンド データの表示と処理を実現する方法をガイドできます。

上記は、バックエンドデータを取得するためのVue Elementフロントエンドアプリケーション開発の詳細な内容です。Vue Elementバックエンドデータ取得の詳細については、123WORDPRESS.COMの他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • Vue Element フロントエンドアプリケーション開発の動的メニューとルーティングの関連付け処理
  • Vue Element フロントエンドアプリケーション開発: Vuex での API ストアビューの使用
  • Vue Element フロントエンドアプリケーション開発開発環境の準備
  • Vue3+elementui plusでプロジェクトを作成する方法
  • Vue要素は行データを結合するテーブルを実現します
  • Vue プロジェクトに bootstrap、elementUI、echarts を導入する方法
  • 展開と折りたたみ機能を実装する vue element-ul のサンプルコード
  • Vueは要素を使用して、追加、削除、変更、パッケージ化の手順を実装します。
  • vue+Element-uiはログイン登録フォームを実装します
  • Vue Element フロントエンドアプリケーション開発メニューリソース管理

<<:  Linuxオンラインソフトウェアgccをオンラインでインストールする方法

>>:  Windows 上の MySQL 5.6 で my.ini 設定ファイルを見つける方法

推薦する

XHTMLにおけるH1タグの位置について

最近、H1 については多くの議論が行われていますが (記事のコンテンツ ページ内)、おおよそ 2 つ...

base target="" はフレームを開くためのベースリンクのターゲットを指定します

<base target=_blank> は、基本リンクのターゲット フレームを新しいペ...

JavaScriptでフロアナビゲーションエフェクトを作成するプロセスの詳細な説明

目次この期間の目標1. 関数の実装1.1 構造層1.2 スタイルレイヤー1.3 行動層1.3.1 フ...

MySQLテーブルパーティショニングプログラムを変更する方法

MySQLテーブルパーティショニングプログラムを変更する方法1. サブテーブルの実装の原則は次のとお...

シンプルなカルーセルの最も完全なコード分析を実装するJavaScript(ES6オブジェクト指向)

この記事では、シンプルなカルーセルを実装するためのJavaScriptの具体的なコードを参考までに紹...

ES6 クラス継承を使用してゴージャスなボール効果を実現する方法

目次導入実装手順キャンバス環境を作成するライティングボールBallクラスを継承するMoveBallク...

MySQL の datetime フィールドの丸め操作

目次序文1. 背景2. シミュレーションテスト3. 結論要約する序文もし私が罠に陥っていなかったら、...

理論の普及——ユーザーエクスペリエンス

1. 概念分析 1: UE ユーザー エクスペリエンス <br />英語ではユーザー エ...

Ubuntu サーバーで MySQL を設定し、リモート接続を実装する方法

サーバー: Ubuntu Server 16.04 LSSクライアント: Ubuntu 16.04 ...

mysql を解決: エラー 1045 (28000): ユーザー 'root'@'localhost' のアクセスが拒否されました (パスワードの使用: NO/YES)

1. 問題時々Mysqlにログインしてパスワードを入力すると、この状況が発生しますmysql -u...

Dockerコンテナがホストポートにアクセスできない場合の解決策

最近、仕事中に問題が発生しました。Docker コンテナがホストの redis にアクセスできず、t...

Bツリー挿入プロセスの概要

前回の記事 https://www.jb51.net/article/154153.htm では、B...

MySQLのexecute、executeUpdate、executeQueryの違い

execute、executeUpdate、executeQuery の違い (およびそれらの戻り値...

Vueにおける仮想DOMの理解のまとめ

これは本質的に、ビュー インターフェース構造を記述するために使用される共通の js オブジェクトです...

jQueryはスライディングタブを実装する

この記事では、スライドタブを実装するためのjQueryの具体的なコードを参考までに紹介します。具体的...