前端protobuff:多个proto文件用protoc生成的单一js文件,在前端如何使用呢?

题目描述

如问题所述
网络上的答案大多都是单个proto引入,所以我想知道多个文件如何引入呢?求大佬赐教!

首先准备好两个文件:
message.proto

syntax = "proto3";

package org.example;
import "google/protobuf/any.proto";

message Message {
    int32 id = 1;
    string from = 2;
    string to = 3;
    map<string, string> ext = 4;
    google.protobuf.Any body = 5;
}

body.proto

syntax = "proto3";

package org.example;

message Body {
    int32 ver = 1; 
    string body = 2;
}

题目来源及自己的思路

我首先安装好nodejs,protoc环境
并且编写了两个文件messages.proto body.proto,都是独立的,然后打包成变为:myproto_libs.js

在上面两个文件的同目录下
执行命令:protoc --js_out=library=msg_lib,binary:. message.proto body.proto

得到:msg_lib.js

然后如何导入到浏览器中去就卡住了。

我的尝试

1.了解closure-library

网址:https://developers.google.com...
并且把库从:https://github.com/google/clo... 拷贝到本地运行了一些demo。但是并没有在库中找到与google-protobuf相关的关键字,因为我们生成的js文件中含有var jspb = require('google-protobuf');类似字段,放弃之

2.使用nodejs的 browserify(参考:https://www.jianshu.com/p/e63...

在生成msg_lib.js目录下
运行

npm install -g require
npm install -g browserify
npm install google-protobuf

创建export.js

var msg = require('./msg_lib');
module.exports = {
   DataProto: msg
};

再次执行

browserify export.js > msg_lib_bundle.js

失败了!!!,因为msg_lib_bundle.js里的和原来的js就多了几行!!!完全没有吧protobuff里面的内容打包进去!!

阅读 6.2k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题