天天看點

前端js讀寫protocolbuffer工具:安裝過程:檔案編寫:

工具:

npm:node.js的包管理工具

protoc:将.protoc檔案生成指定語言的protobuf代碼

browserify:CommonJS格式轉換工具,将node.js使用的包轉換成前端js可以使用的包

安裝過程:

npm安裝:

使用這個工具隻需要安裝node.js

browserify等安裝:

  1. npm install -g require
  2. npm install -g browserify
  3. npm install google-protobuf

protoc安裝:

首先找到Protobuf的最新版本源碼,對應檔案是

Source code (tar.gz)

 ,然後依次執行以下指令:

  1. wget https://github.com/google/protobuf/archive/v3.5.1.tar.gz
  2. tar -xzvf v3.5.1.tar.gz
  3. cd protobuf-3.5.1/
  4. ./autogen.sh
  5. ./configure --prefix=/usr/local/protobuf
  6. make -j8 && make install
  7. ldconfig
  8. 如果不成功,則:配置庫路徑

    (1)打開profile檔案

    vim /etc/profile
               
    (2)在該檔案最後添加環境變量
  9. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/protobuf/lib

  10. export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/protobuf/lib

  11. export PATH=$PATH:/usr/local/protobuf/bin

  12. export PKG_CONFIG_PATH=/usr/local/protobuf/lib/pkgconfig/

  13. (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>