Skip to content

Lakutata 概述 ​

Lakutata 是一个基于 IoC 的 Node.js / TypeScript 应用框架,让 Web 服务、命令行工具、桌面(Electron)应用和嵌入式设备共用同一套编程模型。应用是一棵由容器创建的对象树(组件、提供者、控制器):DTO 校验对象的选项和输入,各种传输方式把控制器暴露出去——HTTP(Express、Fastify)、CLI(Commander)、服务调用(HTTP、Socket.IO、JSON-RPC 2.0、gRPC、NATS、Electron IPC)、定时任务和消息队列。同一个控制器方法可以同时通过所有这些方式调用。

lakutata 包通过各个子路径重新导出 @lakutata/* 系列包(见下表),并为每个应用预置两个组件:log(Logger,输出与 pino 兼容的 JSON 日志行)和 entrypoint(对外提供控制器的 Entrypoint)。

从哪里开始 ​

GettingStarted 用模板创建第一个项目,并演示第一个应用;ProjectStructure 介绍项目中的文件;下面的各篇指南分别介绍框架的各个部分。

子路径 ​

子路径内容
lakutataApplication、Component、Provider、BaseObject、Container、DTO、Exception、Time、isPackaged、resourcesPath、校验消息
lakutata/decorator/di@Inject、@Configurable、@Autoload、@Singleton、@Scoped、@Transient、@Lifetime
lakutata/decorator/dto@Expect、@Accept、@Return、@IndexSignature
lakutata/decorator/asst@Before、@After
lakutata/dtosPaginationSearchDTO、PaginationResultDTO、paginator、FlexibleDTO、JSON Schema 转换
lakutata/com/entrypointEntrypoint、buildEntrypoints、Controller、各种上下文、Result、访问控制、中间件、httpServiceEntrypoint、scheduleEntrypoint
lakutata/decorator/ctrl@HTTPAction、@GET…@OPTIONS、@CLIAction、@ServiceAction、@Schedule、@Prefix、@UseMiddlewares
lakutata/adapter/express、lakutata/adapter/fastifyHTTP 传输
lakutata/adapter/commanderCLI 传输
lakutata/adapter/socket.io、lakutata/adapter/jsonrpc、lakutata/adapter/electron服务传输
lakutata/com/loggerLogger 组件,预置为 log(输出与 pino 兼容的 JSON 行)
lakutata/orm、lakutata/decorator/ormTypeORM 及其装饰器
lakutata/com/database、lakutata/provider/databaseDatabase 组件和提供者
lakutata/com/cacherCacher 组件
lakutata/com/mutexMutex 组件、@Synchronized
lakutata/com/queueQueue 组件、@QueueAction、queueEntrypoint
lakutata/com/i18nI18n 组件、Translator、语言中间件
lakutata/com/dockerDocker 组件
lakutata/com/containerdContainerd 组件
lakutata/com/monitorCPU、内存、事件循环和 HTTP 监控
lakutata/security、lakutata/provider/passwordHash哈希、加解密、签名、PasswordHash 提供者
lakutata/utils辅助函数

不在本包中的:@lakutata/cli(lakutata 命令:创建项目、执行迁移、打包应用,见 Command)、@lakutata/grpc(gRPC 客户端、服务端和服务传输)、@lakutata/nats(NATS 组件和服务传输)、@lakutata/dbus(D-Bus)和 @lakutata/mcp(Model Context Protocol)。

指南 ​

指南主题
GettingStarted环境要求、创建项目、在已有项目中加入 Lakutata、第一个应用
ProjectStructure用模板创建的项目中的文件、脚本和可选功能,以及自己的模板
Application应用:选项、链式 API、生命周期、运行模式、打包后的应用
Objects组件、提供者及其容器:生命周期类型、作用域、创建与销毁、不使用应用的容器
Injection依赖注入、对象的选项、在多个应用之间共享功能
DTOValidationDTO、校验规则,以及选项、输入和返回值的校验
Exceptions声明异常、异常的消息、客户端收到的内容、框架的异常
Loggerlog 组件:写日志、可读的行或 JSON、输出目标、换用其他日志记录器
Decorator各子路径的装饰器
TimeTime 类
HelperFunctionslakutata/utils 的辅助函数
Controllers控制器与动作:地址、输入与结果、前缀、继承
Entrypoint入口组件:选项与适配器、启动与停止、动作列表
Middlewares动作的中间件与访问控制
HTTPHTTP 适配器:路由、输入、响应、错误,以及 Express 和 Fastify 的功能
CLI命令行工具:命令、选项、提示输入、输出与退出码
ServiceCalls通过 HTTP、Socket.IO、JSON-RPC 2.0 和 Electron 调用服务动作:模式、响应、客户端及其事件
GRPC通过 gRPC 提供服务动作(@lakutata/grpc),以及从其他应用和其他语言调用它们
NATSNATS 组件、通过 NATS 提供服务动作(@lakutata/nats)、服务代理及其事件
Schedules定时任务:间隔、cron 表达式、只在一个实例中执行的任务
Queue消息队列:生产者、@QueueAction 消费者、重试、死信、结果
DatabaseDatabase 组件与提供者、连接选项、多个数据库
DatabaseDrivers逐个介绍数据库驱动:需要安装什么、选项、限制
MongoEmbedded应用内的 MongoDB,文档保存在文件中
Entities实体、查询、事务与错误
Migrations编写、生成和执行迁移
CacheCacher 组件:wrap()、各种存储及其分层、存储保存的值
Mutex实例与进程之间的锁
I18n多语言消息
DockerIntegrationDocker 组件
ContainerdIntegrationContainerd 组件
MonitorCPU、内存、事件循环和 HTTP 请求的监控器
Security哈希、加解密、签名、密码
DBusD-Bus 服务和客户端(@lakutata/dbus):方法、对象、属性、信号
MCP模型上下文协议(@lakutata/mcp)的工具、资源和提示词,基于 stdio 和 HTTP
Commandlakutata 命令:创建项目、工作区、迁移、翻译、环境变量
Packaging单文件包、可执行文件和安装包,以及打包后的应用在运行时读取什么

每个 @lakutata/* 包都有自己的 README,各子路径的类型声明也为每个声明附带了说明和示例。

Released under the MIT License.