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のダウンロードとインストールのチュートリアル図

推薦する

Navicat for SQLite で中国語データを CSV にインポートする方法

この記事では、参考までに、csv中国語データをNavicat for SQLiteにインポートする具...

jsとcssのブロッキング問題の詳細な分析

目次DOMContentLoadedとロードjs ブロッキングとは何ですか? CSS ブロッキングと...

Docker ベースの Jenkins のデプロイに関する詳細なチュートリアル

このドキュメントを作成した当時は2019年12月頃で、er2.200が最新バージョンでした。 1.画...

Nginx をベースに特定の IP への短期アクセス数を制限する

特定の期間内に特定の IP へのアクセス回数を制限する方法は、特に悪意のある DDOS 攻撃に直面し...

MySQL 5.7.21 のインストールとパスワード設定のチュートリアル

MySQL5.7.21のインストールとパスワード設定のチュートリアルは次のとおりです。公式リファレン...

React.Childrenの詳しい使い方

目次1. React.Children.map 2. React.Children.forEach ...

CSSラベル表示モードについて1つの記事で学ぶ

タグの種類(表示モード) HTML タグは、一般的にブロック タグとインライン タグの 2 種類に分...

Linux でリモート サーバー ファイルの状態を表示する方法

以下のように表示されます。 test コマンドはファイルが存在するかどうかを判断します。 ssh u...

Node.jsとDenoの比較

目次序文Denoとは何ですか? Node.jsとの比較建築ESモジュール依存関係の管理TypeScr...

小規模プログラムへのデータキャッシュ機構の応用と実装

ミニプログラムデータキャッシュ関連知識データ キャッシュ: データをキャッシュして、アプレットを終了...

マークアップ言語 -

123WORDPRESS.COM HTML チュートリアル セクションに戻るには、ここをクリックして...

Linux C ログ出力コード テンプレート サンプル コード

序文この記事は主に Linux C でのログ出力コード テンプレートに関する関連コンテンツを紹介し、...

MYSQLのバックアップデータのスケジュールクリアの特定の操作

1|0 背景プロジェクトの要件により、各月の履歴在庫データをアーカイブしてバックアップする必要があり...

MySQL のキーとインデックスの違い

まずはコードを見てみましょう: ALTER TABLE reportblockdetail ADD ...

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

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