Vue の proto ファイルの関数呼び出しのグラフィカルな説明

Vue の proto ファイルの関数呼び出しのグラフィカルな説明

1. protoをコンパイルする

すべての .proto ファイルを保存するために、src フォルダーの下に新しい proto フォルダーを作成します。 proto フォルダでターミナルを開き、次のコマンドを入力します。

//proto フォルダーに入り、helloworld.proto を現在の .proto ファイル名に置き換えて次のコンパイルを実行します。protoc -I=. helloworld.proto \
    --js_out=import_style=commonjs、バイナリ:。\
    --grpc-web_out=import_style=commonjs,mode=grpcwebtext:.

.proto ファイル (helloworld.proto) がコンパイルされ、2 つの js ファイルが生成されます。

  • helloworld_pb.js
  • helloworld_grpc_web_pb.js

2. コンパイルされたprotoファイル内の変数と関数

.proto 内の関数の構造は、主に関数とパラメータの 2 つの部分で構成されます。

サービスグリーター
{
  rpc AddEmployee(Employee) は (EmployeeID) を返します {} // 従業員情報の単項メッセージを送信します}
//送信要求データ型構造メッセージ従業員
{
  文字列名 = 1;
  int32 年齢 = 2;
}
//関数処理結果メッセージのEmployeeIDの型構造を返す
{
  int32 id = 1;
}

機能部分

コンパイル後、helloworld_grpc_web_pb.js ファイルに「service Greeter」という名前のサービスと AddEmployee 関数が定義されます。

パラメータセクション

Employee と EmployeeID のパラメータは helloworld_pb.js で定義されています。

1. リクエストパラメータEmployeeを送信する

Employee の最初のパラメータ名の関数形式は次のとおりです (これは、set 形式を使用するリクエスト パラメータです)。

Employee の 2 番目のパラメータ age には、次の関数形式があります (これは、セット形式のリクエスト パラメータです)。

2. 結果パラメータEmployeeIDを返す

EmployeeID の戻り結果には、id という 1 つのパラメーターのみが含まれます。関数の構造は次のとおりです (ここでは、get 形式を使用した戻りパラメーターを示します)。

proto での関数の呼び出し

簡単な呼び出し例は次のとおりです (ボタンをクリックしてクリック イベント get_helloworld を生成します)。

<el-button type="primary" @click="get_helloworld">
    こんにちは世界
</el-button>
get_helloworld() {
    this.client = 新しい GreeterClient("http://192.168.10.102:8181", null, null);

    // リクエストパラメータを作成し、値を割り当てます var request = new Employee();
    リクエストの名前を設定します。
    リクエスト.setAge(11);
    // クライアントの対応する grpc メソッドを呼び出し、grpc リクエストを送信し、バックエンドから返された戻り値を受信します。this.client.addEmployee(request, {"my-service-header": "test_service"}, (err, response) => {
        もし(エラー){
            コンソール.log(
                `addEmployee の予期しないエラー: code = ${err.code}` +
                `、メッセージ = "${err.message}"`
            );
        } それ以外 {  
            console.log(response.getId()); // 返された情報を出力します}
    });
},

この時点で、返された ID 値がコンソールに表示されます。

返された結果をインターフェースに表示する

関数の戻り結果は、次のように適切な形式でインターフェイス コントロールに表示されます。

1. テーブルコントロール

テーブル コントロールは、頻繁に使用されるデータ表示コントロールです。以下はサンプル プロトコル コードです (リスト データ形式を返し、列挙変数を含みます)。

rpc SelectAllCameras(SelectAllCamerasRequest) は (SelectAllCamerasResponse) を返します{}
// すべてのカメラデバイスを照会するメッセージ SelectAllCamerasRequest{
  int32 ページインデックス = 1;
  int32 ページサイズ = 2;
  文字列条件 = 3;
}
//クエリ結果を返し、列挙型CameraBrandを含むCameraInfoの配列を返します
メッセージSelectAllCamerasResponse{
  CodeErr列挙エラー番号 = 1;
  繰り返し CameraInfo cameraArray = 2;
}
// カメラ情報メッセージ CameraInfo{
  文字列 szCameraUID = 1; // uid
  string szName = 2; // 名前 Dongmenkou Camera CameraBrand enumCameraBrand = 3; // ブランド}
// カメラブランド enum CameraBrand {
  デフォルト_カメラ_ブランド = 0;
  HIKI_VISION = 1;
  大化 = 2;
  ユニビュー = 3;
}

1. ヘッダーファイルをインポートする

「../proto/device_manage_grpc_web_pb」から{ device_register_serviceClient }をインポートします。
「../proto/device_manage_pb」から {SelectAllCamerasRequest,} をインポートします。
 <el-table :data="caminfoTable" ref="caminfoTable" >
   <el-table-column type="index" :index="table_index" align="center" label="シリアル番号" width="50"></el-table-column>
   <el-table-column prop="UID" label="UID" width="220" align="center">
     <テンプレート スロット スコープ="スコープ">
       <span>{{scope.row.getSzcamerauid()}}</span>
     </テンプレート>
   </el-table-column>
   <el-table-column prop="szName" label="カメラ名" width="150" align="center">
     <テンプレート スロット スコープ="スコープ">
       <span>{{scope.row.getSzname()}}</span>
     </テンプレート>
   </el-table-column>
   <el-table-column prop="enumCameraBrand" label="カメラブランド" width="120" align="center">
     <テンプレート スロット スコープ="スコープ">
       <span>{{カメラブランド[scope.row.getEnumcamerabrand()].label}}</span>
     </テンプレート>
   </el-table-column>
</el-table>
//返された結果を配列変数caminfoTable:[]に代入します。
// カメラのブランド。ここでの CameraBrand は、カメラ情報を追加するときにドロップダウン ボックスのオプションを入力するために使用され、特定のデータを表示するためにも使用されます。CameraBrand: [
  {値:0、ラベル:"デフォルト"},
  { 値: 1、ラベル: "sea*" },
  { 値: 2、ラベル: "Big*" },
  { 値: 3, ラベル: "宇*" },
]、
//カメラデバイスの情報を取得する get_camerainfo_data(){
   this.client = 新しい device_register_serviceClient("http://192.168.10.102:8181", null, null);
   var request_selectallCam = 新しい SelectAllCamerasRequest();
   request_selectallCam.setPageIndex(this.Pagination_queryInfo.page_index);
   request_selectallCam.setPageSize(this.Pagination_queryInfo.per_page);
   this.client.selectAllCameras(request_selectallCam,{"my-service-header": "dev_manage_service"},(err,response)=>{
     もしエラーが起きたら
        コンソール.log(
           `selectAllCameras の予期しないエラー: code = ${err.code}` +
             `、メッセージ = "${err.message}"`
         );
     }それ以外{
         var caminfoList = response.getCameraarrayList();
         this.Pagination_total_pages = caminfoList.length; // ページの総数を取得します this.caminfoTable = caminfoList; // 返された結果をテーブルデータテーブル変数に割り当てます}
   });
   //最初のページが表示されるようにページ番号を調整します this.Pagination_queryInfo.page_index=1;
 },

要約する

これで、vue の proto ファイル関数呼び出しに関するこの記事は終了です。より関連性の高い vue proto ファイル関数呼び出しについては、123WORDPRESS.COM で以前の記事を検索するか、次の関連記事を引き続き参照してください。今後も 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Vue 親コンポーネントが子コンポーネント関数の実装を呼び出す
  • vuex の補助関数 mapGetters の基本的な使い方の詳細な説明
  • Vue3 の SetUp 関数のプロパティとコンテキスト パラメータの詳細な説明
  • Vuexの補助関数の使い方
  • vue2.x の徹底研究 - h 関数の説明

<<:  Linux ファイルとユーザー管理の実践

>>:  Win10 64ビットMySQL8.0のダウンロードとインストールのチュートリアル図

推薦する

Dockerイメージを素早くデプロイして実行する最新のIDEAプロセスの詳細な説明

背景docker とアイデアを使用して、Java Web の開発、展開、運用までのプロセス全体を実現...

Docker デプロイメント Consul 構成プロセスの分析

コマンドを実行docker run -d --name consul -p 8500:8500 co...

Linux で MySQL データベースのデータ ファイル パスを変更する手順

rpm インストール方法を使用して MySQL データベースをインストールした後、データ ファイルの...

ミニプログラムは左スライドのドロワーメニューをネイティブに実装します

目次WXS レスポンス イベントプランAページ構造とスタイルWXS イベントコールバック関数WXS ...

Docker Alpine イメージのタイムゾーン問題に対する完璧な解決策

最近、Docker を使用して Java アプリケーションをデプロイしていたときに、タイムゾーンが間...

反応ルーティングでパラメータを渡すいくつかの方法についての簡単な説明

最初のパラメータ渡し方法は、動的ルーティングパラメータ渡しです。リンクのパス属性を設定することで、ル...

Node.js で MySQL データベースにバッチデータを挿入する方法

プロジェクト(nodejs)では、一度に複数のデータをデータベースに挿入する必要があります。データベ...

SQL IDENTITY_INSERT ケーススタディ

一般的に、データ テーブル内の列を ID 列として設定すると、ID 列の表示値を手動で ID 列に挿...

MAC での MYSQL5.7.17 接続失敗の問題と解決策

MYSQL5.7.17 が MAC で接続できない問題。SQLBench_community 6.3...

入力できない無効な値はアクションレイヤーに渡すことができません

フォームを入力不可にしたい場合は、フォームを次のように設定します。コードをコピーコードは次のとおりで...

mysql 簡単な操作例を表示

この記事では、例を挙げて mysql show 操作について説明します。ご参考までに、詳細は以下の通...

HTMLでは、全体的なスタイルとレイアウトを崩さずに、部分的に強制スクロールバーを使用できます。

まずはエフェクト画像を投稿します:全体的なスタイルとレイアウトが崩れないように、スクロール バーがロ...

Linux で Jenkins プロジェクトを構築するプロセス (CentOS 7 を例に)

https://gitee.com/tengge1/ShadowEditor のデプロイメントを例...

MySQL マスタースレーブレプリケーションでエラーをスキップする方法

1. 従来のbinlogマスタースレーブレプリケーション、エラー報告をスキップする方法 mysql&...

Linux CentOS 6.5 ifconfig が IP を照会できない問題の解決方法

最近、何人かの友人から、仮想マシンに CentOS をインストールした後、ifconfig コマンド...