安装 下载安装protobufjs https://github.com/protobufjs/protobuf.js 查看protobufjs候选版本 $ npm view protobufjs versions...使用NPM全局安装protobufjs $ npm i -g protobufjs protobuf.js 依赖 long.js、bytebuffer.js 创建.proto文件 $ vim msg.proto.../node_modules/protobufjs/bin/pbjs -t json msg.proto > msg.json 得到的msg.js文件是json格式 在前面加上module.exports...\protobufjs\bin\pbjs" %* ) ELSE ( @SETLOCAL ::将环境变量PATHEXT中的JS删除 @SET PATHEXT=%PATHEXT:;....\protobufjs\bin\pbjs" %* ) 初始化 $ npm i -g require let pbroot = require("protobufjs").Root; let json
2. protobufjs模块 ? 本人最早在cocos2dx 2.x时代就开始用protobufjs模块来操纵protobuf一直到现在。...安装protobufjs到项目 npm install protobufjs@5 —save 使用npm install命令安装模块,注意我们这里使用的是protobufjs 5.x版本。...安装protobufjs到全局 npm install -g protobufjs@5 使用npm install -g 参数将模块安装到全局,目的主要是方便使用protobufjs提供的pbjs命令行工具...proto文件并编译生成proto对象 //导入protobufjs模块let protobuf = require("protobufjs");//获取一个builder对象let builder =...分析protobufjs源码 ?
(); protobuf.loadProtoFile('aaa.proto', builder); protobuf.loadProtoFile('bbb.proto', builder); ... protobufjs...protobufjs不是提供了操作方法吗,那么简单: //实例化登录请求 let loginReq = new pb.LoginRep(); loginReq.account = 'zxh'; loginReq.password
一、 不修改源码让protobufjs适应多平台 我们上一篇讲解了通过修改源码的方案,让protobufjs能正常运行在jsb环境上。...这个方案适合将protobufjs源码直接放到项目中,而我们使用npm来管理三方库的方式,这种方案就显得不太优雅。 1....toString: () => '[object process]' } } ... require('protobufjs'); 这种方案相当于欺骗protobufjs我们是nodejs,这段代码也解释两句...方案二:霸王硬上弓 在require(‘protobufjs’)之后强制修改Util.IS_NODE的值 protobufjs.Util.IS_NODE = cc.sys.isNative; 这个方法简单直接...").newBuilder({})['import']({ //proto内容的json格式 ... }).build(); 1.require(“protobufjs”)导入protobufjs模块
我们之前讲过要在Creator原生环境下使用protobufjs,使用伪装者的方式模拟nodejs的fs和path模块可以完美解决问题。...但Creator模拟器是平时开发调试的利器,不能运行protobufjs会影响日常的开发效率,也会影响pbkiller的用户,决对不能马虎了事。 1....不论是web\ios\android所有平台的文件加载都可以用cc.loader.loadRes搞定,比protobufjs中实现的fetch都简单多了,cc.loader.loadRes为我提供了一盏明灯...熄灭 马上开始动手,刚一动手时,就想到决对不能修改protobufjs的源码,因为有些人是用npm来管理的protobufjs,不能让pbkiller的用户去修改node_moduls吧,这样太low了...如果这样去实现protobufjs的fetch函数,只能是异步加载,而我之前提供的pbkiller的演示范例全是同步方式,决对不能这样坑了pbkiller的用户呀。 “哎呦!
我们之前讲过要在Creator原生环境下使用protobufjs,使用伪装者的方式模拟nodejs的fs\path模块可以完美解决问题。...熄火 马上开始动手,但在准备动手前,我就想到绝对不能修改protobufjs的源码,因为我的pbkiller用户有些是用npm来管理的protobufjs,不可能让他们去修改node_moduls里的代码吧...我可以要在运行时修改protobufjs中的关键函数,将其中的具体实现自己重写一次不就行了吗? 这样从物理表面上并没有修改源码,同时又可解决同步异步问题。...当知道这种思考解决问题的方法时,我立刻就想起解决protobufjs在creator1.7模拟器上的问题,当时我不正是用的这种解决问题的吗?...引导 有了具体的实施步骤,不再废话了,直接上代码 1) 搞定Util.fetch //导入protobufjs let protobuf = require('protobufjs'); //保存原Util.fetch
当a.proto文件中import了b.proto文件,在成功加载a.proto文件后protobufjs内部在解析a.proto时会自动加载b.proto,此时会触发XMLHttpRequest API...null : ProtoBuf.loadProto(contents, builder, filename); }; 从源码中可以看出,protobufjs有两种加载模式:同步与异步。...在《当creator遇上protobufjs|相遇》 一文中我们分析过ProtoBuf.Util.fetch函数,这里简单回顾一下: 浏览器:使用XMLHttpRequest实现的同步、异步的proto...后来我又尝试了在protobufjs 6.x中使用的方案,在ProtoBuf.loadProtoFile函数,使用cc.loader.load代替ProtoBuf.Util.fetch,采用异步加载的方式...要想cc.loader.getRes的返回值有效,需要预先将资源加载到cc.loader的缓存中,因此提供了一个pbkiller.preload函数 let ProtoBuf = require('protobufjs
感谢蓝小野的反馈 pbkiller插件与《当creator遇上protobufjs》系列文章是开启我创作Cocos Creator教程的起点,可是之前有好长一段时间因为自己状态不佳,pbkiller插件都没有去更新维护...预加载 为了解决模拟器、原生环境、微信小游戏的加载、兼容问题(protobufjs库使用了nodejs中的模块、微信小游戏不能使用XMLHttpRequest)。...然后就可以使用pbkiller封装的protobufjs以同步方式编译proto文件,一起看下面预加载用法: //预先加载 pbkiller.preload(() => { //编译proto
回想在设计pbkiller时了兼容protobufjs的多种使用方法(加载proto、json、js),pbkiller也提供了json格式的协议加载,因此之前Shawn当时为了图省事随手将Player.proto...这次代码没有报错,从Network中可以看到加载顺序变成了,先加载的Player.proto后加载的Player.json,至此找到了问题出现在的原因: protobufjs在解析ChatMsg.proto
protobufjs在微信小游戏环境中运行出错,一时让不少人被此问题卡住,做为pbkiller的开发者,必须将些问题了解清楚,目前提供下面几个方案: 一....使用预编译js 将proto文件转换为js文件使用,此方法支持protobufjs5.x~6.x 二. protobufjs5.x 动态加载方案 let ProtoBuf = require('protobufjs...player.toArrayBuffer(); let player2 = pb.Player.decode(data); this.log(player2); }, builder); 三、 protobufjs...6.x 动态加载方案 let protobuf = require(‘protobufjs’); protobuf.util.fetch = cc.loader.load.bind(cc.loader...); protobufjs 6.x动态加载可以解决加载问题,但protobufjs 6.x使用了new Function() 函数动态生成代码,导致在实例化proto对象时微信会报错,此方法暂时不可取。
当creator遇上protobufjs | 相遇 当creator遇上protobufjs | 激情 当creator遇上protobufjs | 孕育 当creator遇上protobufjs |...叛逆成长 当creator遇上protobufjs | 青春升级记 (视频) 当creator遇上protobufjs | pbkiller填坑历险记 当creator遇上protobufjs |
先上个视频: 视频内容 在这里分享一下在 Creator 3D 中集成 protobufjs 遇到的问题,如果你在 Creator 3D 中使用其它JS三方库,也会有一定的帮助。...2 插件模式遇到的坑 还好的是 protobufjs 支持插件模式,分别 protobufjs 的三个核心文件: protobuf.js bytebuffer.js long.js 在 Creator...没有好的办法,只有动源码了,将 protobufjs 中的 AMD、CommonJS 模式的加载代码都移除了,终于在微信小游戏环境运行成功!
《pbkiller安装教程》 Creator与Protobufjs爱情成长系列: 《当creator遇上protobufjs|相遇》 《当creator遇上protobufjs|激情》 《当creator...遇上protobufjs|孕育》 《当creator遇上protobufjs|叛逆成长》 《当creator遇上protobufjs|青春升级记》 组件化探索心得系列: 《探索CocosH5正确的开发姿势
protobuf系列 当creator遇上protobufjs|相遇 当creator遇上protobufjs|激情 当creator遇上protobufjs|孕育 当creator遇上protobufjs...|这个杀手不太冷 (pbkiller、视频) 当creator遇上protobufjs|叛逆成长 当creator遇上protobufjs|青春升级记 (pbkiller、视频) protobuf
V2) 构建微服务实战系列,小程序登录鉴权服务(三):RSA(RS512) 签名 JWT 客户端强类型约束,自动生成 API TS 类型定义 protobufjsprotobufjs 安装: 官方文档:protobufjs...安装: yarn add protobufjs node_modules/.bin 会多出如下命令: pbjs pbts 根据 auth.proto 生成 API TS 类型定义 PROTO_PATH...no-decode --no-verify --no-delimited -o $PBTS_OUT_DIR/auth_pb_tmp.js echo 'import * as $protobuf from "protobufjs
protobuf是google推出的一种数据交换协议,比较适合应用于底层服务交互,nodejs提供protobufjs包的实现,下面是一个简单的测试demo: 首先是.proto文件: package...然后是一个测试的nodejs程序,主要是加载.proto文件->实例化message->message buffer化->将buffer保存进log文件: var ProtoBuf = require("protobufjs
65 6C 6C 6F 3C 2F 6E 61 6D 65 3E 3C 2F 68 65 6C 6C 6F 77 6F 72 6C 64 3E 在Node.js中引入PB yarn add protobufjs...; } message AccountList{ required int32 index = 1; repeated Account list = 2; } 开始使用PB协议 引入protobufjs...读取root对象 const ProtoBufJs = require("protobufjs"); const root = ProtoBufJs.loadSync("..../proto/message.proto"); 读取定义好的pb文件, 动态引入读取 const ProtoBufJs = require("protobufjs"); const root = ProtoBufJs.loadSync...打印出了Buffer,此时转化成string const ProtoBufJs = require("protobufjs"); const root = ProtoBufJs.loadSync(".
protobufjs 使用protobuf,定义如下结构 Person.protobuf syntax = "proto3"; message Person { string name = 1;...const Benchmark = require('benchmark'); const thriftrw = require('thriftrw') const protobuf = require('protobufjs
比如 protobufjs,参考 https://cdn.skypack.dev/-/protobufjs@v6.11.2-y1acFEe2eMgyc8qMlXUx/dist=es2020,mode=imports.../optimized/protobufjs.js[4] 共享 Context 重复打包的问题 由 CMD 转化为 ESM 的过程中,分发网络通常会使用 Rollup 等工具,将依赖包的源代码全部打包到一起...cdn.skypack.dev/: https://cdn.skypack.dev/ [3] https://jspm.org/: https://jspm.org/ [4] https://cdn.skypack.dev/-/protobufjs...@v6.11.2-y1acFEe2eMgyc8qMlXUx/dist=es2020,mode=imports/optimized/protobufjs.js: https://cdn.skypack.dev.../-/protobufjs@v6.11.2-y1acFEe2eMgyc8qMlXUx/dist=es2020,mode=imports/optimized/protobufjs.js - END -
领取专属 10元无门槛券
手把手带您无忧上云