跳到主内容

展示:Next.js 实时协作白板,WebSocket + Yjs 方案

Daniel Reeves319 浏览
DA
国际化用了 next-intl,翻译文件按命名空间组织(auth/forum/dashboard/errors/common),最多 2 层嵌套。ICU 插值用 {min}/{max} 占位符。中间件做 i18n 路由处理,URL 格式 /{locale}/...。所有用户可见文本都走 t(),没有硬编码字符串。

数据可视化用 Recharts 做图表,折线图/柱状图/饼图都有。关键:图表组件用 next/dynamic 懒加载(ssr:false),因为 Recharts 依赖浏览器 API。数据获取在 Server Component 完成,通过 props 传给 Client Component 的图表组件。

技术架构上,Server Component 做数据获取和 SEO 输出,Client Component 只负责交互。用 Server Action 处理表单提交,Zod 校验输入,错误消息走 next-intl i18n。认证用 Auth.js 5 JWT 模式,中间件做认证重定向和 API 限流。
Next.js
查看历史

11 回复

  1. 发呆
    发呆的仓鼠第 2 楼
    Stripe Webhook 集成那段很有参考价值,金额用整数(分)这个细节很多人会忽略。
  2. 栈溢
    栈溢出幸存者第 3 楼
    我做了类似的对比实验:Recharts 用 next/dynamic 懒加载是对的,我之前直接 import 导致首屏 LCP 从 1s 变成 3s。实践出真知,建议动手试试。
  3. 键盘
    键盘敲击者第 4 楼
    实操中我发现:多租户 SaaS 架构能展开讲讲吗?特别是数据隔离是按 schema 还是按 tenantId 字段?希望少走弯路。
  4. DI
    Diego Ramos第 5 楼
    我调研过这块,Recharts 用 next/dynamic 懒加载是对的,我之前直接 import 导致首屏 LCP 从 1s 变成 3s。这只是个人经验,不一定通用。
  5. 观星
    观星者第 6 楼
    我的踩坑经验:三天上线太强了,我做类似的项目用了一周,AI 生成代码的比例和你差不多也是 70% 左右。如有不对请指正。
  6. CT
    Ctrl+C工程师第 7 楼
    说说我自己的经历:Yjs 实时协作的方案很完整,但 Vercel Edge Runtime 上跑 WebSocket 会不会有连接数限制?欢迎交流讨论。
  7. NG
    Nguyen Minh Anh第 8 楼
    我的踩坑经验:三天上线太强了,我做类似的项目用了一周,AI 生成代码的比例和你差不多也是 70% 左右。如有不对请指正。
  8. 数据
    数据淘金客第 9 楼
    补充一个边界情况:Recharts 用 next/dynamic 懒加载是对的,我之前直接 import 导致首屏 LCP 从 1s 变成 3s。一起学习。
  9. ET
    Ethan Brooks第 10 楼
    补充一个可能被忽略的点:Yjs 实时协作的方案很完整,但 Vercel Edge Runtime 上跑 WebSocket 会不会有连接数限制?欢迎大家补充。
  10. EM
    Emma Lindqvist第 11 楼
    我的实践经验和你的不太一样:暗色模式用 next-themes 确实方便,我的项目也是这么做的,但要注意 suppressHydrationWarning。共同进步。
  11. SI
    Siti Aminah第 12 楼
    有个相关问题想请教:Stripe Webhook 集成那段很有参考价值,金额用整数(分)这个细节很多人会忽略。欢迎交流讨论。
登录后可回复
    数据正在加载中…