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

推薦する

私の CSS フレームワーク - base.css (ブラウザのデフォルト スタイルをリセット)

コードをコピーコードは次のとおりです。 @文字セット "utf-8"; /* @...

HTML テーブル マークアップ チュートリアル (15): テーブル タイトル

<br />このタグを使用すると、表のタイトルを直接追加し、タイトル テキストの配置プロ...

新しい CSS display:box プロパティの詳細な説明

1. ディスプレイボックス;要素にこのプロパティを設定すると、display:inline-bloc...

zabbix を使用して ogg プロセスを監視する (Linux プラットフォーム)

以前作成されたデータベースの ogg プロセスは、発見されるまでの約半月間ダウンしていました。起動で...

jar パッケージを Docker コンテナに変換する方法

jar パッケージを Docker コンテナに変換する方法1.まずJavaイメージをダウンロードする...

Vue cli開発に基づく外部コンポーネントVantのデフォルトスタイルの変更の詳細な説明

目次序文1. 少ない2. コンポーネントをインポートする3. 設定ファイルを変更するステップ1: l...

JS ES 新機能テンプレート文字列

目次1. テンプレート文字列とは何ですか? 2. 複数行のテンプレート文字列2.1 式付きテンプレー...

Facebook 出会い系サイトデザインのユーザー エクスペリエンス分析

<br />関連記事: Facebookの情報アーキテクチャの分析 元記事: http:...

Linux システムの最適化 (カーネルの最適化) に関するいくつかの提案

スワップを無効にするサーバーがデータベース サービスまたはメッセージ ミドルウェア サービスを実行し...

vue-cli 設定では Vuex の完全なプロセスレコードを使用します

目次序文インストールと使用方法モジュラー管理Vuex の状態永続性要約する序文Vue 開発では、ユー...

win2008 サーバー セキュリティ設定の展開ドキュメント (推奨)

私は新年を迎える前からプロジェクトに取り組んでいましたが、ここ数日で、新しいサーバー用に新しく増設し...

Linux プロセスが占有するポート番号を表示する 6 つの方法

Linux システム管理者にとって、サービスがポートに正しくバインドされているか、またはポートをリッ...

フロントエンド プロジェクトのデフォルトのスクロール バー スタイルを変更する (概要)

スクロールバーのデフォルトスタイルを変更する必要があるプロジェクトを多数作成しましたが、プラグインを...

MySQLデータベースパラダイムの詳細な説明

序文:データベースパラダイムについてはよく耳にしていましたが、詳細まで理解したことはありませんでした...

Nginxを使ってサーバー内で複数コンテナの共存を実現する方法

背景Tencent Linux クラウド ホストがあり、その上に Docker (ServiceDo...