翻译:
基础设施 双关:数据库, Redis/Valkey,缓存,队列,消息经纪人,文件存储,图像,调度, 电子邮件、页码和记录 11个区域 一个包裹.
Bun船的原生地 原生地是运行的地方: Bun.SQL, (中文(简体) ),
bun:sqlite, (中文(简体) ), Bun.RedisClient, (中文(简体) ), Bun.file, (中文(简体) ), Bun.Glob, (中文(简体) ), Bun.S3Client, (中文(简体) ),
Bun.Image, (中文(简体) ), Bun.cron。无 pg,没有 better-sqlite3,没有 ioredis,没有
@aws-sdk,没有 glob,没有 sharp。 。 。 .
五个领域整合了一个成熟的图书馆,而不是手卷: /db 结束
drizzle-orm, (中文(简体) ), /queue 结束 bullmq, (中文(简体) ), /amqp 结束 rabbitmq-client, (中文(简体) ), /logger
结束 @arkv/logger,以及 /email 以任何给养者的名称命名.
前三个是 可选同伴依赖关系因此,应用程序只使用 /files
没有安装它们. @arkv/logger 属于一党和完全依赖。 前两个驾驶一个 Bun API 在下面;
rabbitmq-client 说电线协议 Bun船没有客户端,完毕 node:net, (中文(简体) ),
bun是当地执行的.
安装
bun add @dunx/infra @dunx/core
# plus what the areas you use need
bun add drizzle-orm # /db
bun add bullmq # /queue
bun add rabbitmq-client # /amqp
bun add resend # /email/resend
bun add nodemailer # /email/smtp
bun add react @react-email/render # /email/react
子路径
向导为每行有条可循;本表为索引.
| 子路径 | 这是什么 | 指南 |
|---|---|---|
@dunx/infra/db | 细雨 结束 bun:sqlite 财务报告和审定财务报表 Bun.SQL、交易、种子、命名和租户数据源、查询时间 | 数据库 |
@dunx/infra/redis | Bun.RedisClient,命名连接, pub/sub | 数据库 |
@dunx/infra/cache | Cache 在记忆中, Redis 或双层 CacheStore, (中文(简体) ), CacheMetrics | 缓存 |
@dunx/infra/queue | 公牛数量 结束 Bun.RedisClient: 处理者、出版者、工人 | 队列 |
@dunx/infra/amqp | 兔子客户端数字 : @AmqpHandler,出版社,耗尽的消费者 | 信件经纪人 |
@dunx/infra/schedule | Bun.cron 和计时器 : @Cron, (中文(简体) ), @Interval, (中文(简体) ), @OnceOnBoot | 时间安排 |
@dunx/infra/files | 一个 Storage 合同终止 Bun.file 财务报告和审定财务报表 Bun.S3Client | 文件与图像 |
@dunx/infra/email | 一个 EmailTransport 合同、干跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑 bunx dunx-email preview | 电子邮件 |
@dunx/infra/email/resend | 重新发送 | 电子邮件 |
@dunx/infra/email/smtp | 节点邮件 | 电子邮件 |
@dunx/infra/email/react | 反应电子邮件,作为一个 TemplateRenderer 其它问题 | 电子邮件 |
@dunx/infra/images | 一条无法改变的管道 Bun.Image | 文件与图像 |
@dunx/infra/logger | @arkv/logger 与核心相连 Logger 合同 | 日志 |
@dunx/infra/pagination | 密钥集页码:光标编码器、选项解析器、细雨查询 | 数据库 |
@dunx/infra/pagination/cursor | 同样的解码器和解析器没有细雨查询,所以没有安装细雨就能解析 | 数据库 |
使用量
import { Module } from '@dunx/core';
import { DbModule, SqliteOptions } from '@dunx/infra/db';
import { RedisModule } from '@dunx/infra/redis';
import * as schema from './schema.js';
@Module({
imports: [
DbModule.forRoot(new SqliteOptions({ schema, filename: './app.db' })),
// No url: Bun resolves $VALKEY_URL, then $REDIS_URL, then localhost.
RedisModule.forRoot({ maxRetries: 0 }),
],
})
export class InfraModule {}
与 OtelModule 从 @dunx/core/otel 进口, /db, (中文(简体) ), /redis, (中文(简体) ), /queue
财务报告和审定财务报表 /amqp 打开 OpenTelection 跨度; 见 追踪。 。 。 .
每个地区都有 forRootAsync,这是 forRoot 前面有个工厂
说吧 它存在于一个零参数函数不能做的一件事: 注射,所以
url 或文件名可以关闭 ConfigService。 。 。 .
两项公约
任何可以由构造参数注入的都是运行时类,从不
接口,因为一个接口会擦去并留下什么 @dunx/transform
以记录.
当 dunx 定义合同时, 符是抽象类(Storage, (中文(简体) ),
DbConnection, (中文(简体) ), ImagesOptions) (中文(简体) ). 否则,这是图书馆自己的课
(单位:千美元)BunSQLiteDatabase, (中文(简体) ), ContextStore) (中文(简体) ). 三个出口是: token()相反,
因为没有课适合他们: redisConnection(name), (中文(简体) ), redisMetrics(name) 财务报告和审定财务报表
LoggerSettings。 。 。 .
如果一个区域完全在根管里,那么全部都是. /db, (中文(简体) ), /queue, (中文(简体) ),
/amqp 财务报告和审定财务报表 /email 四个桶不再出口:
通过静态导入可选对等端, 因此导出它们会使
drizzle-orm, (中文(简体) ), ioredis, (中文(简体) ), rabbitmq-client 或者说 resend 硬性要求
import '@dunx/infra'联系他们的子路.
内部 /email 拆分会更进一步 每一个供应商进口都位于
子路径,需要它,没有其它地方: resend 内 /email/resend, (中文(简体) ), nodemailer
内 /email/smtp, (中文(简体) ), react 财务报告和审定财务报表 @react-email/render 内 /email/react。 。 。 .
这么说吧 @dunx/infra/email 装入没有安装的4个,您可以使用它
日志和内存传输。 这个 dunx-email bin 装入渲染器 import()
只有在它需要的时候.
@dunx/infra测试哪个文件可以导入每个销售商, 测试底部
子路径不导入其中任何一种,而且所有四种都是可选择的.
时机不对 除非有要求. { metrics: true } 是最后一个参数
DbModule, (中文(简体) ), CacheModule, (中文(简体) ), RedisModule 财务报告和审定财务报表 QueueModule,绑定 a
QueryMetrics, (中文(简体) ), CacheMetrics, (中文(简体) ), RedisMetrics 或者说 QueueMetrics。 。 。 .
每一措施:
| 子路径 | 时间 |
|---|---|
/db | 每问. Dunx将它创造的驱动器包起来 因为细雨 logger 选项不报告持续时间 |
/cache | 在配置上击出并丢失 CacheStore,包括一个直接注入。 一个连在一起的 wrap 数为一 |
/redis | 每个命令 |
/queue | publish(),处理器在此过程中运行。 A 类 background 处理器运行于一个加固的进程中, 没有定时 |
见 计量。 。 。 .
反对
Bun 1.4.2,细细细雨0.45.2,公牛mq 6.0.5,兔子mq-客户 5.0.8,再版 6.2.8, 节点邮件器 10.0.9 和 @ react-email/render 2.1.0. 邦顿的 文档不完整 所以行为是衡量而不是解读的 这个 证据在 文献/档案 财务报告和审定财务报表 文档/bun-apis.md。 。 。 .
许可证
麻省理工学院