🤔 @epic-web/remember

簡單、型別安全、「單例」實作。

適用於當您的「熱模組替換」涉及到重新評估模組時,但您不希望實際重新評估其中的一部分。

npm install @epic-web/remember

Build Status GPL 3.0 License Code of Conduct

問題

您正在使用像 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 編寫,然後我修改並發佈以符合我的需求。