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

シンプルなセカンダリメニューを動的に実装するマウスを第 1 レベルのラベル上に置くと、マウスが小さな...

Linux RabbitMQ クラスタ構築プロセス図

1. 全体的な手順冒頭で、RabbitMQ サービスをインストールして実行する方法を紹介しましたが、...

DockerにELKをインストールしてJSON形式のログ分析を実装する方法

ELKとは何ですか? ELK は、Elastic が提供するログ収集およびフロントエンド表示ソリュー...

CSS導入方法4つのまとめ(共有)

1. インライン参照:ラベルに直接使用されるが、メンテナンスコストが高い スタイル='フォ...

ログインと登録機能を実現するjs

この記事の例では、ログインと登録機能を実装するためのjsの具体的なコードを参考までに共有しています。...

コードをセマンティックにする HTML のヒント

HTML のセマンティクスはありふれた問題のようです。Google で検索すると、セマンティクスに関...

UTF-8 および GB2312 ウェブエンコーディング

最近、多くの学生から Web ページのエンコーディングについて質問を受けています。gb2312 と ...

JavaScript の手ぶれ補正とスロットリングの説明

目次安定スロットリング要約する安定自動ドアは人を感知してドアを開け、5 秒間のカウントダウンを開始し...

Linux で iostat コマンドを使用するチュートリアル

序文運用・保守を行う人がスキルを持っていなければ、サーバーを操作するのに恥ずかしさを感じてしまうと言...

CSS3 で translate と transition を使用する方法

translate と transition は非常に強力で、習得するのは不可能だといつも感じていま...

ReactのPropsの簡単な比較

目次クラスコンポーネントのプロパティ比較浅い同等の浅い比較機能コンポーネントの簡単な比較先週面接に行...

Idea で Docker を使用して SpringBoot プロジェクトをデプロイする詳細な手順

序文プロジェクト要件: Dockeridea に Docker プラグインをインストールし、Dock...

Javascriptでオブザーバーモードを実装する方法を教えます

目次オブザーバーパターンとは何ですか?シナリオシミュレーションコードの実装コードのリファクタリング要...

LinuxシステムでのSystemC環境設定方法

以下はcentos7での設定方法ですsystemc ソース パッケージをダウンロード: System...

Docker+nacos+seata1.3.0 のインストールと使用設定チュートリアル

これに先立ち、1日かけてやってみました。Seataは使い方が簡単で超シンプルですが、インストールや設...