首页 文章 LAYA的js/ts使用protobuff
LAYA的js/ts使用protobuff
编辑时间:2020-02-13 13:18:57 作者:dashizi 浏览量:1475

https://www.npmjs.com/package/pbjs


首先需要安装nodejs,会自动安装npm


然后安装pbjs

npm install -g pbjs

然后将proto转为js,可以选择使用--es5/--es6

pbjs wire-format.proto --es5 wire-format.js

如果是ts,需要可以转为d.ts

pbjs wire-format.proto --ts wire-format.ts


补充:

使用中发现ts导出并没有将proto中定义的package封装导出到生成的ts代码中,导致使用时需要所有导出的成员访问都必须进行import,比如:

import { C2S_GamerLogin, encodeC2S_GamerLogin, decodeC2S_GamerLogin, MSG, encodeMSG } from "../pb/msg";

当然也可以使用

import * as pb from "../pb/msg";

但是总是觉得不怎么科学,还是想在生成的ts文件中加上package封装成module

查看pbjs源码,只需要在源码的$USERPATH/AppData/Roaming/npm/npm/node_modules/pbjs/generate.js中稍作修改即可

const lines = [];  lines是要生成的文件内容,最先加入module定义:

    if (typescript) {
        lines.push("export module "+ schema.package +" {")
    }

然后再最后再插入一个

    if (typescript) {
        lines.push("}")
    }

这样生成的ts代码用的时候可以只要import一次package,比如pb

import {pb} from "../pb/msg";
pb.encodeC2S_GamerLogin


来说两句吧
最新评论