前端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里面的内容打包进去!!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论