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

发布于 2022-09-11 22:06:40 字数 1783 浏览 17 评论 0

题目描述

如问题所述
网络上的答案大多都是单个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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文