1. Proto kompilierenErstellen Sie einen neuen Proto-Ordner unter dem Src-Ordner, um alle .proto-Dateien zu speichern. Öffnen Sie das Terminal im Proto-Ordner und geben Sie den folgenden Befehl ein: //Gehen Sie in den Proto-Ordner und führen Sie die folgende Kompilierung aus. Ersetzen Sie dabei helloworld.proto durch den aktuellen .proto-Dateinamen protoc -I=. helloworld.proto \ --js_out=import_style=commonjs,binär:.\ --grpc-web_out=import_style=commonjs,mode=grpcwebtext:. Eine .proto-Datei (helloworld.proto) wird kompiliert, um zwei JS-Dateien zu generieren:
2. Variablen und Funktionen in der kompilierten ProtodateiDie Struktur einer Funktion in .proto besteht hauptsächlich aus zwei Teilen: Funktion und Parameter: Service-Begrüßer { rpc AddEmployee(Employee) gibt (EmployeeID) zurück {} // Unäre Nachricht mit Mitarbeiterinformationen übermitteln} //Senden Sie die Anforderung Datentypstruktur Nachricht Mitarbeiter { Zeichenfolgenname = 1; int32 Alter = 2; } //Gibt die Typstruktur der Funktion zurück, die die Ergebnisnachricht EmployeeID verarbeitet { int32-ID = 1; } Funktionsteil Nach der Kompilierung werden der Dienst mit dem Namen „service Greeter“ und die Funktion AddEmployee in der Datei helloworld_grpc_web_pb.js definiert: Abschnitt „Parameter“ Die Parameter Employee und EmployeeID sind in helloworld_pb.js definiert: 1. Senden Sie den Anfrageparameter Employee Der erste Parametername von Employee hat die folgende Funktionsform (dies ist der Anforderungsparameter im festgelegten Format): Der zweite Parameter „age“ von Employee hat die folgende Funktionsform (dies ist ein Anforderungsparameter im Set-Format): 2. Ergebnisparameter EmployeeID zurückgeben Das EmployeeID-Rückgabeergebnis hat nur einen Parameter, id. Die Funktionsstruktur ist wie folgt (hier ist der Rückgabeparameter im Get-Format): Aufrufen von Funktionen in Proto Ein einfaches Aufrufbeispiel sieht wie folgt aus (klicken Sie auf die Schaltfläche, um ein Klickereignis get_helloworld zu generieren): <el-button Typ="primär" @click="get_helloworld"> hallo Welt </el-button> get_hallowelt() { this.client = neuer GreeterClient("http://192.168.10.102:8181", null, null); //Anfrageparameter erstellen und Werte zuweisen var request = new Employee(); request.setName("Welt"); Anfrage.SetAge(11); // Rufen Sie die entsprechende Grpc-Methode des Clients auf, senden Sie eine Grpc-Anfrage und empfangen Sie den vom Backend zurückgesendeten Rückgabewert this.client.addEmployee(request, {"my-service-header": "test_service"}, (err, response) => { wenn (Fehler) { konsole.log( `Unerwarteter Fehler für addEmployee: Code = ${err.code}` + `, Nachricht = "${err.message}"` ); } anders { console.log(response.getId()); // Die zurückgegebenen Informationen drucken} }); }, An diesem Punkt können Sie den zurückgegebenen ID-Wert in der Konsole sehen. Zeigen Sie die zurückgegebenen Ergebnisse in der Benutzeroberfläche an Die Rückgabewerte der Funktion sollen in geeigneter Form in den Interface-Controls dargestellt werden, hier: 1. Tabellenkontrolle Das Tabellensteuerelement ist ein häufig verwendetes Steuerelement zur Datenanzeige. Hier ist der Beispiel-Protocode (gibt das Listendatenformat zurück und enthält Aufzählungsvariablen): rpc SelectAllCameras(SelectAllCamerasRequest) gibt zurück(SelectAllCamerasResponse){} // Alle Kamerageräte abfragen Nachricht SelectAllCamerasRequest{ int32 Seitenindex = 1; int32 Seitengröße = 2; Zeichenfolgenbedingung = 3; } //Gibt das Abfrageergebnis zurück, gibt ein Array von CameraInfo zurück, das den Aufzählungstyp CameraBrand enthält Nachricht SelectAllCamerasResponse{ CodeErr enumErrorNo = 1; wiederholte CameraInfo CameraArray = 2; } // Kamerainformationsmeldung CameraInfo{ Zeichenfolge szCameraUID = 1; // uid Zeichenfolge szName = 2; // Name Dongmenkou-Kamera CameraBrand enumCameraBrand = 3; // Marke} // Kameramarke enum CameraBrand { STANDARDKAMERAMARKE = 0; HIKI_VISION = 1; DAHUA = 2; UNIVIEW = 3; } 1. Header-Datei importieren importiere { device_register_serviceClient } aus "../proto/device_manage_grpc_web_pb"; importiere { SelectAllCamerasRequest,} von "../proto/device_manage_pb"; <el-table :data="caminfoTabelle" ref="caminfoTabelle" > <el-table-column type="index" :index="table_index" align="center" label="Seriennummer" width="50"></el-table-column> <el-table-column prop="UID" label="UID" width="220" align="center"> <template slot-scope="Umfang"> <span>{{scope.row.getSzcamerauid()}}</span> </Vorlage> </el-Tabellenspalte> <el-table-column prop="szName" label="Kameraname" width="150" align="center"> <template slot-scope="Umfang"> <span>{{scope.row.getSzname()}}</span> </Vorlage> </el-Tabellenspalte> <el-table-column prop="enumCameraBrand" label="Kameramarke" width="120" align="center"> <template slot-scope="Umfang"> <span>{{Kameramarke[scope.row.getEnumcamerabrand()].label}}</span> </Vorlage> </el-Tabellenspalte> </el-Tabelle> //Das zurückgegebene Ergebnis einer Array-Variable caminfoTable:[] zuweisen, // Kameramarke, die CameraBrand wird hier verwendet, um die Dropdown-Feldoptionen beim Hinzufügen von Kamerainformationen auszufüllen, und wird hier auch verwendet, um spezifische Daten anzuzeigen CameraBrand: [ {Wert:0, Bezeichnung:"Standard"}, { Wert: 1, Bezeichnung: "sea*" }, { Wert: 2, Bezeichnung: "Big*" }, { Wert: 3, Bezeichnung: "Zeichen*" }, ], //Informationen zum Kameragerät abrufen get_camerainfo_data(){ this.client = neuer device_register_serviceClient("http://192.168.10.102:8181", null, null); var request_selectallCam = neue SelectAllCamerasRequest(); request_selectallCam.setPageIndex(diese.Pagination_queryInfo.page_index); request_selectallCam.setPageSize(diese.Pagination_queryInfo.per_page); this.client.selectAllCameras(Anfrage_selectallCam,{"mein-service-header": "dev_manage_service"},(Fehler,Antwort)=>{ wenn(fehler){ konsole.log( `Unerwarteter Fehler für selectAllCameras: Code = ${err.code}` + `, Nachricht = "${err.message}"` ); }anders{ var caminfoList = response.getCameraarrayList(); this.Pagination_total_pages = caminfoList.length; //Gesamtzahl der Seiten abrufen this.caminfoTable = caminfoList; //Das zurückgegebene Ergebnis der Tabellendatentabellenvariable zuweisen} }); //Passen Sie die Seitenzahl an, um die erste Seite anzuzeigen. this.Pagination_queryInfo.page_index=1; }, ZusammenfassenDies ist das Ende dieses Artikels über Protodatei-Funktionsaufrufe in Vue. Weitere relevante Vue-Protodatei-Funktionsaufrufe finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder durchsuchen Sie die folgenden verwandten Artikel weiter. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Diagramm des Tutorials zum Herunterladen und Installieren von MySQL8.0 für Win10 64-Bit
1. Log4j zur Protokollsegmentierung 1) Bereiten S...
1. Installationsprozess MySQL-Version: 5.7.18 1. ...
1. INSERT INTO SELECT-Anweisung Das Anweisungsfor...
Bitte öffnen Sie die Testseite in einem gängigen ...
Inhaltsverzeichnis 1. Grundlegende Umgebungskonfi...
Inhaltsverzeichnis Einführung 1. Gesamtarchitektu...
Manchmal kann es vorkommen, dass eine SQL-Anweisu...
Inhaltsverzeichnis 1. HTML-Struktur erstellen 2. ...
In der Frontend-Entwicklung ist $ eine Funktion i...
Prinzip der MySQL-Paging-Analyse und Effizienzver...
Inhaltsverzeichnis Einzelne Bedingung, einzelne D...
1. Laden Sie die 64-Bit-ZIP-Datei von der offizie...
Im Allgemeinen wird das Colspan-Attribut des <...
1. Laden Sie das CentOS-Image herunter 1.1 Downlo...
1. Linux-Netzwerkkonfiguration Bevor Sie das Netz...