🤔 @epic-web/remember
简单、类型安全、“单例”实现。当您的“热模块替换”涉及重新评估模块时,但您不想实际重新评估其中的一部分。
npm install @epic-web/remember
问题
您正在使用像 Remix 这样的框架,并使用 --manual
模式 在每次更改时重新评估您的模块。 但是您有一些您不想在更改之间丢失的状态。 例如
- 数据库连接
- 内存缓存
此解决方案
这是从 @jenseng 的 abuse-the-platform
演示 (ISC) 中复制/粘贴/修改/测试的。 它基本上是一个类型安全的单例实现,您可以使用它在模块重新评估之间保持状态。
用法
import { remember } from '@epic-web/remember'
export const prisma = remember('prisma', () => new PrismaClient())
请记住,您在该回调中所做的任何更改都不会在重新评估模块时反映出来(这就是重点)。 因此,如果您需要更改回调,则需要重新启动服务器。
忘记一个值
如果值过时、记忆的连接丢失或记忆的实例关闭/错误/等,则可能需要显式地忘记一个值。
import { remember, forget } from '@epic-web/remember'
export const server = remember('server', () =>
http.createServer().listen('8080')
.on('close', () => forget('server')))
许可证
MIT
信用
原始代码由 @jenseng 编写,然后我修改了它并发布了它以满足我的需求。