- Published on
All Posts
All Posts
- nextjs (15)
- ai-companion (11)
- express (10)
- react (9)
- web-scraping (8)
- hono (6)
- scrapy (5)
- interview (5)
- supabase (4)
- authjs (4)
- leetcode (4)
- cloudflare (3)
- undetected-chromedriver (3)
- aws (3)
- vercel (3)
- react-query (3)
- prisma (3)
- protobuf (3)
- shadcn (3)
- websocket (3)
- git (3)
- curl_cffi (2)
- clerk (2)
- authentication (2)
- deployment (2)
- drizzle (2)
- neon (2)
- redis (2)
- tailwind-css (2)
- tiptap (2)
- zod (2)
- zustand (2)
- pino (2)
- browser-automation (1)
- cache-control (1)
- free-tier (1)
- cloud-databases (1)
- sql (1)
- nosql (1)
- planetscale (1)
- postgresql (1)
- giscus (1)
- jotai (1)
- mongodb (1)
- newsletter (1)
- mailerlite (1)
- redux (1)
- reford (1)
- english (1)
- ai-integration (1)
- sonner (1)
- swr (1)
- s3 (1)
- test (1)
- vscode (1)
- trie-树 (1)
- token (1)
- tts (1)
- oauth (1)
- credential (1)
- eks (1)
- k8s (1)
- cicd (1)
- apidoc (1)
- pm2 (1)
- cluster (1)
- kafka (1)
- streaming (1)
- lib (1)
- Published on
结合 node-cron、Express、PM2 实现稳定的定时任务时,需要考虑任务管理和 PM2 多进程冲突。- Published on
在 Express 中,你可以在 controller 层抛出异常,而不需要在每个 server 层使用 try-catch 来捕获异常。最佳实践是通过全局错误处理中间件来统一处理异常。这样可以更简洁地管理错误逻辑,避免冗余的 try-catch 代码。- Published on
在搭建 AI 会话 API 的场景中, 可以结合两者优势, 使用 `HTTP + 流式返回` 处理初始响应,快速获取第一段回复, 使用 `WebSocket` 维护后续的对话,实现更顺畅的交互体验。- Published on
在 Express 中使用 mongoose 作为 ODM 工具, 正确设置索引, 并启用时间戳自动更新, 可以考虑使用 nanoid 代替默认 ObjectId