Nest.js是用于构建高效且可伸缩的服务端应用程序的渐进式Node.js框架。支持Typescript、面向AOP编程、支持typeorm、Node.js版的spring、构建微服务应用。
Nest.js是用于构建高效且可伸缩的服务端应用程序的渐进式Node.js框架。支持Typescript、面向AOP编程、支持typeorm、Node.js版的spring、构建微服务应用。
最近接触了 nestjs ,发现这个项目也用到依赖注入。和公司现在运行的老项目很像。
主要由 zazeninjector + koa + typeorm 组成
通过装饰器 autoinject 进行装饰
比如 在 account_facade 用到, account_service:IAccount.AccountService 则直接作为 account_facade 这个方法的参数即可
熟悉 java 的人看起来,会感觉就像 spring boot 那一套,但并不是完全像
相比公司老项目,nestjs 相对更为智能,创建新的模块也更为方便些。
会出现如下文件及选择
包管理工具具体用哪个就看个人习惯了
http://localhost:3000/ 会出现 Hello World!
nestjs 还提供了很多功能。会一点点了解。虽然不大可能用于公司现在的项目了。但是后续了解nestjs 的实现,玩一玩还是可以的
这里我使用的nrwl来初始化nest项目, nest cli 之类同理可以初始化项目出来
nestjs提供connectMicroService 和createMicroSerivice.
两者的不同点是在connectMicroService 是以一个socket主服务的额外服务存在.
由于nestjs支持多种服务化运行, 如http grpc 等等, socket主服务大部门可能大部份以http形式启动运行.
createMicroSerivice 是主服务就是微服务, 初入nestjs可以看下两个函数的api, 它们是非常不同的.
现在做测试, 用connectMicroService ,
好, 起了一个5557的tcp微服务.
TCP的TCP服务其实是一个自定义的带长度的JSON数据SOCKET
传输格式为 len(int)#(char)json_str(string) 中间的#是固定的.
大致形式为 13#{"foo":"bar"} 这里json格式是任意写的, 实际上json有固定的字段.
{"partern": any, "data":any, "id"?:number } partern是一个可以序列化的object或字符串, 用于生成token, 生成token时key会做递归排序. id是可选的, 当id传了时, tcp服务端会返回一个销毁的消息
他大致像{"partern": "destroy", , "id":20 }
所有的微服务需要映射到 类似 {"partern": "destroy", }的数据结构, 当然自己写类不用 partern 也是可行的, 自已的Controller注解不要继承于ParternMessage即可.
其他基于TCP的二进制数据转到对像时, 这个对像最好继承{"partern": any, "data":any, "id"?:number }, key值存在即可, partern 还要当token用, 用于Controller映射到请求