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 ファイルが生成されます。
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 を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
>>: Win10 64ビットMySQL8.0のダウンロードとインストールのチュートリアル図
コードをコピーコードは次のとおりです。 @文字セット "utf-8"; /* @...
<br />このタグを使用すると、表のタイトルを直接追加し、タイトル テキストの配置プロ...
1. ディスプレイボックス;要素にこのプロパティを設定すると、display:inline-bloc...
以前作成されたデータベースの ogg プロセスは、発見されるまでの約半月間ダウンしていました。起動で...
jar パッケージを Docker コンテナに変換する方法1.まずJavaイメージをダウンロードする...
目次序文1. 少ない2. コンポーネントをインポートする3. 設定ファイルを変更するステップ1: l...
目次1. テンプレート文字列とは何ですか? 2. 複数行のテンプレート文字列2.1 式付きテンプレー...
<br />関連記事: Facebookの情報アーキテクチャの分析 元記事: http:...
スワップを無効にするサーバーがデータベース サービスまたはメッセージ ミドルウェア サービスを実行し...
目次序文インストールと使用方法モジュラー管理Vuex の状態永続性要約する序文Vue 開発では、ユー...
私は新年を迎える前からプロジェクトに取り組んでいましたが、ここ数日で、新しいサーバー用に新しく増設し...
Linux システム管理者にとって、サービスがポートに正しくバインドされているか、またはポートをリッ...
スクロールバーのデフォルトスタイルを変更する必要があるプロジェクトを多数作成しましたが、プラグインを...
序文:データベースパラダイムについてはよく耳にしていましたが、詳細まで理解したことはありませんでした...
背景Tencent Linux クラウド ホストがあり、その上に Docker (ServiceDo...