如何在Vue中使用protobuf
protobuf
是由google
推出的和語言無關(guān)和平臺無關(guān),可擴展的序列化數(shù)據(jù)結(jié)構(gòu)協(xié)議,類似于XML,但是比XML更小、更快、更簡單。protobuf
幾乎支持當(dāng)前的大部分語言,如JavaScript
安裝protobufjs
cnpm i -S protobufjs
注意:當(dāng)前protobufjs的版本為:6.11.2
在項目src目錄下新建proto目錄,把后端給的test.proto
文件放進去
syntax = "proto3";//第一行指定了正在使用proto3語法:如果你沒有指定這個,編譯器會使用proto2。這個指定語法行必須是文件的非空非注釋的第一行 ? message Address { ? ? ?string province ?= 1; ? ? ?string city = 2; ? ? ?string county = 3; }
打開dos窗口,執(zhí)行以下命令將proto文件轉(zhuǎn)換成js文件。大概執(zhí)行15秒,執(zhí)行成功后會在src/proto文件夾中創(chuàng)建proto.js文件
npx pbjs -t json-module -w commonjs -o src/proto/proto.js src/proto/*.proto
注意:-w參數(shù)可以指定打包js的包裝器,這里用的是commonjs 。.proto文件除了可以生成js文件,還可以生成json文件。通常打包成js模塊比較好用,因為vue在生產(chǎn)環(huán)境中打包后只有html,css,js等文件。生成json文件的命令為:
npx pbjs -t json src/proto/*.proto > src/proto/proto.json
引入proto.js:
import protoRoot from "@/proto/proto.js";
先打印看看protoRoot內(nèi)容:
基本使用:
<template> ? <div class="main">main</div> </template> <script> import protoRoot from "@/proto/proto.js"; export default { ? data() { ? ? return {}; ? }, ? mounted() { ? ? let testobj = protoRoot.lookup("Address").create(); ? ? testobj.province = "四川省"; ? ? testobj.city = "成都市"; ? ? testobj.county = "中國"; ? ? console.log("testobj:", testobj); ? ? ? //encode數(shù)據(jù) ? ? let testObjBuffer = protoRoot.lookup("Address").encode(testobj).finish(); ? ? console.log("testObjBuffer:", testObjBuffer); ? ? ? //decode數(shù)據(jù) ? ? let testdata = protoRoot.lookup("Address").decode(testObjBuffer); ? ? console.log("testdata:", testdata); ? }, }; </script>
為以后方便使用,我們可將命令添加到package.json的script中:
"proto": "pbjs -t json-module -w commonjs -o src/proto/proto.js ?src/proto/*.proto"
以后更新proto
文件后,只需要npm run proto
即可重新生成最新的proto.js
使用axios發(fā)起請求時,需要注意設(shè)置axios的請求類型使用arraybuffer:
import axios from 'axios' const httpService = axios.create({ ? timeout: 45000, ? method: 'post', ? headers: { ? ? 'X-Requested-With': 'XMLHttpRequest', ? ? 'Content-Type': 'application/octet-stream' ? }, ? responseType: 'arraybuffer' })
到此這篇關(guān)于如何在Vue中使用protobuf的文章就介紹到這了,更多相關(guān)Vue使用protobuf內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue中el-date-picker type=daterange日期清空時不回顯的解決
這篇文章主要介紹了vue中el-date-picker type=daterange日期清空時不回顯的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07Vue中ElementUI結(jié)合transform使用時彈框定位不準(zhǔn)確問題解析
在近期開發(fā)中,需要將1920*1080放到更大像素大屏上演示,所以需要使用到transform來對頁面進行縮放,但是此時發(fā)現(xiàn)彈框定位出錯問題,無法準(zhǔn)備定位到實際位置,本文給大家分享Vue中ElementUI結(jié)合transform使用時彈框定位不準(zhǔn)確解決方法,感興趣的朋友一起看看吧2024-01-01使用Vue3新特性構(gòu)建動態(tài)表單的方法詳解
傳統(tǒng)的表單開發(fā)通常需要編寫大量的重復(fù)代碼,例如處理用戶輸入、驗證數(shù)據(jù)、更新 UI 等等,為了簡化開發(fā),我們可以借助 Vue 3 的新特性,例如組合式 API 和 ref 對象,所以本文我們將一起學(xué)習(xí)如何使用 Vue 3 的新特性構(gòu)建一個更加靈活、可擴展的動態(tài)表單2024-06-06vue 設(shè)置 input 為不可以編輯的實現(xiàn)方法
今天小編就為大家分享一篇vue 設(shè)置 input 為不可以編輯的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09webpack項目調(diào)試以及獨立打包配置文件的方法
下面小編就為大家分享一篇webpack項目調(diào)試以及獨立打包配置文件的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-02-02vue?element修改el-select控件長度style=“width:XXpx“不生效的解決
這篇文章主要介紹了vue?element修改el-select控件長度style=“width:XXpx“不生效的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07