本文为日文正文的英文译名.
当我在已有的Next.js网络服务中添加了"博览会"应用软件时,我起初希望尽可能共享代码.
在实践中,类型和商业规则共享良好,而UI和运行时间依赖则更容易单独管理.
SquadNote使用pnpm工作空间和Turborepo,由.,和.组成.
当前分割根工作空间配置简单:只管理构建和打字检查依赖性.
与其增加共享的自定义构建步骤,我首先从一个每个软件包输出TypeScript源的结构开始.
我分享的最大好处来自TRPC类型.
移动类型输入网络,使用相同的输入和输出.
我还把颜色、间距和字体大小分开, 业务规则如等待列表成为共享候选人,作为纯函数,不依赖React或DB.
它们很容易测试,结果在网络和移动之间没有差别。
我不分享的东西,我不分享屏幕组件。
Next.js DOM和React Introduct View有不同的相互作用,可访问性和布局限制,即使它们看起来相似.
认证存储也不同: Web: NextAuth cookie session Mobile: SecureStore Bearer JWT 两者都到达同一个API,但共享登录屏幕和信使存储需要处理每个环境对许多分支的关注. routing还有"Next.js App路由器"和"博览会路由器"的单独实施.
我所认同的是一个通用的功能包装的意义。
标准 在将代码移到包之前, 我先检查一下: 它取决于DOM, 反应原生,节点,还是Cloudflare API?
网络和移动是否有同样的理由改变?
树枝会增加吗?
我能单凭单位测试来验证意义吗?
商业规则和类型往往有相同的改变理由。
UI即使为同一特性,也会用设备来分解其变化原因.
独行侠的优势在于不能分享一切.
它能够稍后移动共享边界。
我先执行内部应用,然后在规格漂移成为比重复更大的问题时提取到包上.