工具:
npm:node.js的包管理工具
protoc:将.protoc檔案生成指定語言的protobuf代碼
browserify:CommonJS格式轉換工具,将node.js使用的包轉換成前端js可以使用的包
安裝過程:
npm安裝:
使用這個工具隻需要安裝node.js
browserify等安裝:
- npm install -g require
- npm install -g browserify
- npm install google-protobuf
protoc安裝:
首先找到Protobuf的最新版本源碼,對應檔案是
Source code (tar.gz)
,然後依次執行以下指令:
- wget https://github.com/google/protobuf/archive/v3.5.1.tar.gz
- tar -xzvf v3.5.1.tar.gz
- cd protobuf-3.5.1/
- ./autogen.sh
- ./configure --prefix=/usr/local/protobuf
- make -j8 && make install
- ldconfig
-
如果不成功,則:配置庫路徑
(1)打開profile檔案
(2)在該檔案最後添加環境變量vim /etc/profile
-
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/protobuf/lib
-
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/protobuf/lib
-
export PATH=$PATH:/usr/local/protobuf/bin
-
export PKG_CONFIG_PATH=/usr/local/protobuf/lib/pkgconfig/
- (3)讓配置檔案生效
source /etc/profile
檔案編寫:
定義proto協定檔案,命名login.proto:
syntax = "proto3";
// 使用者登入
message c2s_login {
string email = 1;
string password = 2;
string captcha = 3;
}
protobuf js 代碼生成(login_pb.js)
protoc --js_out=import_style=commonjs,binary:. ./login.proto
定義導出檔案
exports.js
var loginProto = require("./login_pb");
module.exports = {
DataProto: loginProto
};
用browserify轉換打包
browserify exports.js > bundle.js
在浏覽器中使用
<html>
<head>
<script type="text/javascript" src="./bundle.js"></script>
</head>
<body>
<button οnclick="">1111</button>
<script>
var message = new proto.mypackage.myMessage();
message.setEmail("[email protected]");
message.setPassword("123456");
message.setCaptcha("abc");
var bytes = message.serializeBinary();
console.log(bytes);
var data = proto.mypackage.myMessage.deserializeBinary(bytes);
console.log(data);
console.log("my_value:"+data.getEmail());
console.log("name:"+data.getPassword());
console.log("age:"+data.getCaptcha());
</script>
</body>
</html>