[分享创造] 用 Web Components 做了个全栈框架 Gemkit,首屏 JS 26KB, SSR 性能和 SvelteKit 差不多
几年前在这发过我写的 Web Components 库 Gem ( https://v2ex.com/t/738230 ),一直有个硬伤:只有客户端渲染。连它自带的文档站生成器 gem-book 也是 CSR ,搜索引擎基本收录不到啥东西。 之前在这问过 React SSR 和自定义元素怎么配合( https://v2ex.com/t/998353 ),当时我自己回复说「用 jsdom 模拟生成 ShadowDOM 理论上也行」。后来真这么干了: 先用 jsdom 做原型,跑通了序列化(输出 Declarative Shadow DOM )和水合(复用服务端的 DOM ,不重建) 再把 jsdom 去掉,直接渲染成字符串,用 AsyncLocalStorage 做请求隔离,支持流式输出,这就是 gem-ssr 最近参考 Next.js 和 SvelteKit ,在 gem-ssr 上做了应用框架 Gemkit 长啥样 一个文件就是一个页面: // src/pages/blog/[slug].ts @page<{ slug: string }, Post>({ load: (
阅读原始来源来源记录
研究分析
变化记录
来源描述:几年前在这发过我写的 Web Components 库 Gem ( https://v2ex.com/t/738230 ),一直有个硬伤:只有客户端渲染。连它自带的文档站生成器 gem-book 也是 CSR ,搜索引擎基本收录不到啥东西。 之前在这问过 React SSR 和自定义元素怎么配合( https://v2ex.com/t/998353 ),当时我自己回复说「用 jsdom 模拟生成 ShadowDOM 理论上也行」。后来真这么干了: 先用 jsdom 做原型,跑通了序列化(输出 Declarative Shadow DOM )和水合(复用服务端的 DOM ,不重建) 再把 jsdom 去掉,直接渲染成字符串,用 AsyncLocalStorage 做请求隔离,支持流式输出,这就是 gem-ssr 最近参考 Next.js 和 SvelteKit ,在 gem-ssr 上做了应用框架 Gemkit 长啥样 一个文件就是一个页面: // src/pages/blog/[slug].ts @page<{ slug: string }, Post>({ load: (
版本与成本证据
可供比较的近期同类记录:“Show HN: ActiveDNS, a free DNS search service” (Show HN, 2026年11月12日);“Show HN: ThreeSweep – switch macOS windows with single trackpad swipe” (Show HN, 2026年11月12日)。主题相近仅用于导航,未核验其是否属于同一需求或独立证据。
适用与受影响对象
先明确变化影响的现有工作流,再判断是否升级。发布热度不证明效果提升;接口、价格或可用性变化也可能增加迁移工作。
缺失的比较信息
待补齐:新旧行为、受影响套餐与地区、生效时间、兼容性、回退路径及同一工作量下的成本。
采用与迁移验证
保存发布或政策原文,对新旧方案运行同一个任务并比较结果与完整账单;若涉及停服,先核验截止时间再安排迁移。