1. 什么是 npm 包 @oott123/grpc_tools_node_protoc_ts
@oott123/grpc_tools_node_protoc_ts
是一个 Node.js 的插件包,它可以将 .proto
文件编译为 TypeScript 文件,供前端使用。由于 TypeScript 是静态类型语言,使用它可以大大减少代码调试和维护的难度。
此包是基于 Google 的 protoc
编译器和 grpc_tools_node_protoc
插件包构建的,提供了一种轻松的方式将 proto 文件转换为 TypeScript 文件。
2. 安装和使用
安装:
--- ------- ---------- ----------------------------------
使用:
假设我们有一个 proto 文件名为 hello.proto
:
------ - --------- ------- ------------ - ------ ---- - -- - ------- ------------- - ------ ------- - -- - ------- ---------- - --- -------- -------------- ------- --------------- -- -
我们可以在终端中执行以下命令编译它:
--- ---------------------- - -------------------------------------------------------- - -------------------- - --------------- - -------------
这将在 gen
目录中生成 TypeScript 文件。如果我们想将输出变为可读性更好的模块化形式,我们可以使用 @oott123/grpc_tools_node_protoc_ts
包:
--- ---------------------- - -------------------------------------------------------- - -------------------- - --------------- - -------------
在这里,我们使用了 --ts_proto_out
参数而不是 --ts_out
,并将输出路径设置为 ./gen
目录。这样,我们的 TypeScript 文件将会被组织成可引入的模块化文件格式。
3. 示例代码
将 proto 文件映射为 TypeScript 的一个例子如下:
------ - --------- ------- --------- ------- ---------- - --- -------- -------------- ------- --------------- -- - ------- ------------ - ------ ---- - -- - ------- ------------- - ---- ------- - -- ------ ------- - -- -
SayHello
函数接收一个 HelloRequest
对象并返回一个 HelloResponse
对象。我们将在这个例子中使用 @oott123/grpc_tools_node_protoc_ts
包来将协议文件编译为 TypeScript 代码,并使用编译代码来建立连接和交互。
我们可以使用以下代码在本地启动 gRPC 服务器:
-- ------ ------ - -- ---- ---- ------- ------ - -- ----------- ---- --------------------- -- -- ----- -- ----- ---------- - -------------------------------------- ----- ------------- - ----------------------- ----- --------------- --- - ---------------------------- ----- ------ - --- -------------- ----------------------------------------- - -------------- ---- --------- ---- - --------------------- ---------- ----- - ------- - - ----- ----- -------- - - -------- ----- -------- ------- ----------------- -- -------------- ---------- -- --- -- ----- ---------------------------------- ---------------------------------------- ----- ---- -- - -- ----- - ------------------- ------- - ------------------- ------- -- ------------------------ --------------- ---
在这个例子中,我们使用了 protoLoader
模块来加载 hello.proto
文件,并将其分配给 productService
变量。我们在 SayHello
函数中编写了业务逻辑并将其传递给服务器。最后,我们将使用 grpc.Server
在 localhost:4000
端口上启动服务器。
我们还可以使用以下代码向服务器发送请求:
-- ---------- ------ - --------------------- - ---- ---------------- ------ - -- ---- ---- ---------------- ------ - -- ----------- ---- --------------------- -- ---- ----- ---------- - ------------------------------------- - --------- ---- --- ----- ------------- - --------------------------------------------------- ----- --------------- --- - ---------------------------- -- ---- ----- ------ - --- --------------- ----------------- --------------------------------- -- -- -- --- -- ----------------- ----- ----- -- ----- ---- --------- ---- -- - ---------------------- ---
在这个例子中,我们使用了 loadPackageDefinition
和 grpc.loadPackageDefinition
函数来加载协议,然后创建 ProductService
实例,并使用它来调用 SayHello
函数。最后,我们使用回调函数来处理服务器的响应。
4. 总结
通过使用 @oott123/grpc_tools_node_protoc_ts
包,我们可以轻松地将 .proto
文件转换为 TypeScript,然后在浏览器端使用所生成的代码以与服务器进行通信。为了更好地理解本文,我们提供了一个简单的示例代码,您可以尝试在本地环境中构建服务器和客户端,并使用这些代码进行交互。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/60055f1681e8991b448dcaac