Now vibe coding, so learning hammer FE ?
《TanStack中的React服务端组件》
标签:#前端 #React_Server_Components #TanStack_Start #NextJs #Bundle_Optimization
总结:
TanStack Start实现了与Next.js截然不同的React服务端组件方案,通过显式API将组件渲染保留在服务端,避免将繁重代码发送至客户端。文章以应用外壳为例,展示RSC如何将客户端Bundle从308KB缩减至203KB,并说明其适合大型非交互式组件树的场景,同时澄清RSC并非数据加载或SSR的替代品,而是针对性的性能优化工具。
文章要点:
1. RSC是只在服务端运行的React组件,可以直接在组件里写await查数据,而且组件代码不会发送到浏览器,不用担心数据库密码暴露给前端
2. TanStack实现RSC的方式特别直白,通过renderServerComponent这类API就能显式声明,作者认为比Next.js的实现更好懂
3. 别误会,RSC不是用来替代数据加载或SSR的,TanStack的loader和原有的服务端渲染已经做得很好了,RSC真正的价值是帮浏览器"减肥"
4. 文章举了个生动的例子:故意引入整个图标库来模拟大型组件树,结果RSC把客户端JS从308KB砍到了203KB,省了不少流量
5. 更妙的是RSC还能接收客户端组件当"插槽"传进来,配合Suspense实现流式渲染,让页面边加载边呈现,体验很丝滑
6. 不过作者也提醒,RSC不是银弹,如果你的组件树不大、依赖不多,用它带来的收益可能微乎其微,得看场景取舍
URL:https://frontendmasters.com/blog/react-server-components-in-tanstack/
标签:#前端 #React_Server_Components #TanStack_Start #NextJs #Bundle_Optimization
总结:
TanStack Start实现了与Next.js截然不同的React服务端组件方案,通过显式API将组件渲染保留在服务端,避免将繁重代码发送至客户端。文章以应用外壳为例,展示RSC如何将客户端Bundle从308KB缩减至203KB,并说明其适合大型非交互式组件树的场景,同时澄清RSC并非数据加载或SSR的替代品,而是针对性的性能优化工具。
文章要点:
1. RSC是只在服务端运行的React组件,可以直接在组件里写await查数据,而且组件代码不会发送到浏览器,不用担心数据库密码暴露给前端
2. TanStack实现RSC的方式特别直白,通过renderServerComponent这类API就能显式声明,作者认为比Next.js的实现更好懂
3. 别误会,RSC不是用来替代数据加载或SSR的,TanStack的loader和原有的服务端渲染已经做得很好了,RSC真正的价值是帮浏览器"减肥"
4. 文章举了个生动的例子:故意引入整个图标库来模拟大型组件树,结果RSC把客户端JS从308KB砍到了203KB,省了不少流量
5. 更妙的是RSC还能接收客户端组件当"插槽"传进来,配合Suspense实现流式渲染,让页面边加载边呈现,体验很丝滑
6. 不过作者也提醒,RSC不是银弹,如果你的组件树不大、依赖不多,用它带来的收益可能微乎其微,得看场景取舍
URL:https://frontendmasters.com/blog/react-server-components-in-tanstack/
《用TanStack_Start构建博客(上篇)》
标签:#前端 #TanStack_Start #TanStack_Router #Server_Functions #静态预渲染 #Markdown博客 #代码高亮
总结:
本文通过实战案例演示如何使用 TanStack Start 框架构建一个 Markdown 博客系统。文章重点介绍了 Server Functions 解决同构加载器无法访问文件系统的问题、动态路由参数处理、以及使用 markdown-it 和 Shiki 实现带行号的高亮代码块,为开发者提供了完整的技术实现路径。
文章要点:
- TanStack Start 是基于 TanStack Router 的轻量级服务端框架,支持 SSR、API 端点和 Server Functions
- 使用
- Server Functions 是同构应用的关键——无论 loader 在服务端还是客户端运行,都能保证文件读取逻辑始终在服务端执行
- 动态路由通过
- 使用 markdown-it + Shiki 实现代码高亮,通过自定义 transformer 支持
- 文章预告下篇将介绍静态生成和部署策略
文章URL:https://frontendmasters.com/blog/building-a-blog-in-tanstack-part-1-of-2/
标签:#前端 #TanStack_Start #TanStack_Router #Server_Functions #静态预渲染 #Markdown博客 #代码高亮
总结:
本文通过实战案例演示如何使用 TanStack Start 框架构建一个 Markdown 博客系统。文章重点介绍了 Server Functions 解决同构加载器无法访问文件系统的问题、动态路由参数处理、以及使用 markdown-it 和 Shiki 实现带行号的高亮代码块,为开发者提供了完整的技术实现路径。
文章要点:
- TanStack Start 是基于 TanStack Router 的轻量级服务端框架,支持 SSR、API 端点和 Server Functions
- 使用
import.meta.glob 动态扫描 Markdown 文件,配合 gray-matter 解析文章元数据- Server Functions 是同构应用的关键——无论 loader 在服务端还是客户端运行,都能保证文件读取逻辑始终在服务端执行
- 动态路由通过
$slug.tsx 文件命名实现,配合 createFileRoute 和 head 函数设置页面标题- 使用 markdown-it + Shiki 实现代码高亮,通过自定义 transformer 支持
line-numbers 语法标记,结合 CSS counter 渲染行号- 文章预告下篇将介绍静态生成和部署策略
文章URL:https://frontendmasters.com/blog/building-a-blog-in-tanstack-part-1-of-2/
TypeScript 泛型趣味实践
标签:#TypeScript #泛型 #函数重载 #TanStack #条件类型
文章深入探讨了如何利用 TypeScript 泛型、条件类型和函数重载,为 TanStack Start 的 Server Function 构建一个完全类型安全的查询选项封装函数。通过一个真实的场景——确保带参数和不带参数的 Server Function 都能被正确推断返回类型和参数类型——展示了从基础泛型约束到复杂类型体操的完整实现路径,最终解决了可选参数与类型推断的冲突问题。
文章要点:
- 通过为 TanStack Start 的 Server Function 封装
- 初始方案使用泛型约束
- 利用条件类型
- 通过 TypeScript 函数重载(Overloading)定义两个签名:一个用于带参数的 Server Function,一个用于无参函数,从而精确控制参数的可选性
- 展示了泛型、条件类型与函数重载结合使用的高级技巧,实现编译时严格的类型检查和完美的类型推断
链接:https://frontendmasters.com/blog/fun-with-typescript-generics/
标签:#TypeScript #泛型 #函数重载 #TanStack #条件类型
文章深入探讨了如何利用 TypeScript 泛型、条件类型和函数重载,为 TanStack Start 的 Server Function 构建一个完全类型安全的查询选项封装函数。通过一个真实的场景——确保带参数和不带参数的 Server Function 都能被正确推断返回类型和参数类型——展示了从基础泛型约束到复杂类型体操的完整实现路径,最终解决了可选参数与类型推断的冲突问题。
文章要点:
- 通过为 TanStack Start 的 Server Function 封装
refetchedQueryOptions 工具函数,解决查询数据返回类型为 any 的类型安全问题- 初始方案使用泛型约束
<T extends (arg: { data: any }) => Promise<any>> 提取参数和返回类型,但无法处理无参函数的可选参数场景- 利用条件类型
infer 关键字创建类型工具 ServerFnArgs 来提取函数参数类型,并判断函数是否有参数- 通过 TypeScript 函数重载(Overloading)定义两个签名:一个用于带参数的 Server Function,一个用于无参函数,从而精确控制参数的可选性
- 展示了泛型、条件类型与函数重载结合使用的高级技巧,实现编译时严格的类型检查和完美的类型推断
链接:https://frontendmasters.com/blog/fun-with-typescript-generics/