Nic*_*ick 3 cloudflare svelte cloudflare-workers sveltekit
开发 Svelte/kit 应用程序时是否可以使用 CloudFlare 的 Workers KV?
wrangler dev使用 CloudFlare Workers 适配器时可以构建应用程序然后运行:
npm build
wrangler dev
Run Code Online (Sandbox Code Playgroud)
但是,我还没有进行热模块重新加载工作:
npm dev & wrangler dev
Run Code Online (Sandbox Code Playgroud)
据我所知,没有办法在本地模拟 Workers KV。不过,我设置了一个本地 Redis 实例作为替代。
\n然后,我为 KV 存储创建了一些包装函数。在开发中,它与 Redis 通信,在生产中,它与 Workers KV 通信。例如,这是 的包装函数get。
import { dev } from '$app/env'\nimport redis from 'redis'\n\nconst client = redis.createClient()\nconst get = promisify(client.get).bind(client)\n\nexport const getKvValue = async (key: string): Promise<string | null> => {\n return dev ? await get(key) : await KV.get(key)\n}\nRun Code Online (Sandbox Code Playgroud)\n更新:实际上,您只需使用 JavaScript\xe2\x80\x94 中的对象即可使事情变得更加简单,无需下载并运行 Redis 二进制文件。只需确保在设置值之前对值进行 JSON.stringify 即可。
\nimport { dev } from '$app/env'\n\nconst devKvStore = {}\n\nconst devGetKvValue = (key: string) => {\n return new Promise((resolve) => {\n resolve(devKvStore[key] ?? null)\n })\n}\n\nconst devSetKvValue = (key: string, value: unknown) => {\n return new Promise((resolve) => {\n devKvStore[key] = JSON.stringify(value)\n resolve()\n })\n}\n\nexport const getKvValue = async (key: string): Promise<string | null> => {\n return dev ? await devGetKvValue(key) : await KV.get(key)\n}\n\nexport const setKvValue = async (key: string, value: unknown): Promise<void> => {\n return dev ? await devSetKvValue(key, value) : await KV.put(key, value)\n}\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
1328 次 |
| 最近记录: |