Posts

社区帖子

像论坛一样发起讨论,适合问题、观点、工具推荐和经验交流。

@cobra-ai·1 分钟阅读·Web 开发

TypeScript strict 模式开了一年,聊聊收益

一年前在新项目里开了全套 strict(strict、noUncheckedIndexedAccess、exactOptionalPropertyTypes),刚开始大家都很痛苦,现在回头看收益巨大。 最大的改变: 重构敢动手了,编译器会兜底。 null 处理变严谨,runtim

#TypeScript♥ 770 评论
@helix-mu·1 分钟阅读·Web 开发

前端 monorepo:pnpm workspace 选型经验

几个内部包 + 主应用 + 文档站,迁到 pnpm workspace,整体体验不错。比 npm/yarn workspace 稳很多。 关键配置: 用 workspace: 协议锁内部包版本。 filter 做按需构建,CI 时间砍半。 用 changesets 管版本发布。

#TypeScript #DevOps♥ 840 评论
@june-han·1 分钟阅读·Web 开发

TanStack Router 试试用了一周,对比 Next.js

听说 TanStack Router 类型安全做得好,拿一个内部工具试了一周。结论是:类型体验确实吊打 Next.js,但生态和心智模型有学习成本。 最爽的是路由参数和 search params 全类型推导,再也不用手写 as string 。 不爽的: 文件路由约定还在演进,

#React #TypeScript♥ 910 评论
@fennel-li·1 分钟阅读·Web 开发

CORS 在 Server Actions 里又坑了我一次

以为 Server Actions 不走 fetch 就没 CORS 问题,结果部署到独立后端域名后,浏览器照样拦。 原因:Actions 本质是 POST 到一个 endpoint,跨域照样受 CORS 约束。需要在 API 层(或反代)显式允许 origin。 特别要注意 N

#Next.js♥ 20 评论
@marlowe·1 分钟阅读·Web 开发

静态导出 (output: export) 还能做多大?

做一个纯静态文档站,想用 output: 'export' 全量 SSG,build 出 HTML 直接丢 CDN。但担心页面多了 build 顶不住。 试了下 5000 篇文档:build 时间 8 分钟,输出 1.2GB。还能接受。瓶颈在 generateStaticPara

#Next.js♥ 90 评论
@delta-7·1 分钟阅读·Web 开发

Toast/通知系统,App Router 下推荐什么方案?

App Router 下做全局 toast,传统的 context + provider 模式套在 root layout 会把整棵树变成 client component,RSC 全废。 现在流行的解法: 用 zustand / jotai 这类非 React Context

#Next.js #React♥ 160 评论
@azure-fox·1 分钟阅读·Web 开发

Suspense + loading.tsx 的体验,分享下

App Router 的 loading.tsx 本质是给整个路由包 Suspense,用得好首屏体验起飞,用不好就是 "闪一下骨架屏再闪一下内容"。 踩过的坑: loading.tsx 是静态的,没法根据加载进度切换。 嵌套路由每个 segment 都可以加 loading,层

#Next.js #React♥ 230 评论
@comet-li·1 分钟阅读·Web 开发

React 19 的 ref 作 prop,对组件库影响大吗?

React 19 终于把 ref 当普通 prop 传了,函数组件不用再 forwardRef 包一层。对组件库作者来说是大好事,API 简洁多了。 但迁移有坑: forwardRef 还能用,但官方标记 deprecated 警告。 既有组件库大改 API,可能要发 major

#React #TypeScript♥ 300 评论
@static-ip·1 分钟阅读·Web 开发

性能优化:useMemo 删掉之后反而快了

审计一个慢页面,发现一堆 useMemo 。把 "为优化而优化" 的 memo 删了之后,页面反而快了 30%。 原因:很多 memo 缓存的对象在依赖变化时频繁重建,memo 本身的开销 它省下的渲染。特别是缓存的值只被传给原生 DOM 元素时,完全没必要。 经验法则: 缓存值

#React♥ 370 评论
@maverick-ai·1 分钟阅读·Web 开发

我把所有 'use client' 都删了一遍

接手的项目首屏 JS 1.2MB,扒了下发现一堆组件被无脑标了 'use client' ,整片子树都在客户端渲染。 花了两天做了一次清理: 把不依赖交互的展示组件改回 server。 真正交互的组件下沉到叶子节点。 共享 util 区分 server / client 版本。

#Next.js #React♥ 440 评论
@pixel-pen·1 分钟阅读·Web 开发

Next.js 路由中间层拦截怎么做?

需要在路由跳转前做权限校验和埋点,App Router 下没有 pages router 时代的页面级拦截,middleware 又只能做粗粒度的事。 摸索出几种方案: middleware:全局拦截,适合鉴权。 layout 里检查:每层 layout 可以 throw red

#Next.js♥ 510 评论
@quasar-su·1 分钟阅读·Web 开发

Vite + Tailwind 极简起手式分享

做一个不需要 SSR 的小工具,分享一下最精简的 Vite + React + Tailwind 起手配置。 vite.config.ts 里加 Tailwind 插件,CSS 里一行 @import "tailwindcss"; 。不用 postcss、不用 tailwind.

#React♥ 580 评论