现代框架演进
从 React 18 的并发渲染到 Svelte 5 的 runes,框架正在向更精细的响应式靠拢。
// Svelte 5 - Runes let count = $state(0); let doubled = $derived(count * 2);
从框架革新到构建工具,从性能优化到全新 Web API —— 一次完整的现代前端技术地图导览。
四个核心议题,从宏观到微观,覆盖现代前端开发的关键变革。
React、Vue、Svelte 与 Solid:从虚拟 DOM 到细粒度响应式的范式转变。
Vite、esbuild、Turbopack:原生 ESM 与 Rust 工具链如何重塑开发体验。
Core Web Vitals、流式 SSR、Islands 架构与 RSC(React Server Components)实践。
View Transitions、Container Queries、:has() 选择器与 WebGPU 的全新可能。
每个主题都配有真实代码示例,可直接在项目中应用。
从 React 18 的并发渲染到 Svelte 5 的 runes,框架正在向更精细的响应式靠拢。
// Svelte 5 - Runes let count = $state(0); let doubled = $derived(count * 2);
Vite 凭借原生 ESM 实现毫秒级冷启动,esbuild 与 SWC 让构建速度提升数十倍。
// vite.config.ts export default defineConfig({ plugins: [react()], build: { target: 'esnext' } });
关注 LCP、INP、CLS 三大指标,使用流式 SSR 和 Islands 架构减少 JS 体积。
// 关键资源预加载 <link rel="preload" href="/hero.avif" as="image" fetchpriority="high" />
View Transitions API 让页面切换丝滑,Container Queries 让组件真正自适应。
/* Container Queries */ @container (min-width: 400px) { .card { display: grid; } }
切换标签查看不同场景下的核心代码实现。
$ pnpm create vite@latest my-app --template react-ts $ cd my-app && pnpm install $ pnpm dev VITE v6.0.0 ready in 187 ms ➜ Local: http://localhost:5173/ ➜ Network: use --host to expose ➜ press h + enter to show help # 冷启动 187ms,HMR < 50ms # 原生 ESM + esbuild 预构建依赖
// React 19 - useActionState + Server Actions import { useActionState } from 'react'; function SubscribeForm() { const [state, formAction, isPending] = useActionState( async (prev, formData) => { const email = formData.get('email'); return await subscribe(email); }, { message: '' } ); return ( <form action={formAction}> <input name="email" type="email" /> <button disabled={isPending}>订阅</button> {state.message && <p>{state.message}</p>} </form> ); }
// View Transitions API - 无框架页面切换 function navigateTo(url) { if (!document.startViewTransition) { location.href = url; return; } document.startViewTransition(async () => { const response = await fetch(url); const html = await response.text(); document.body.innerHTML = parseBody(html); }); } /* 配套 CSS */ ::view-transition-old(root), ::view-transition-new(root) { animation-duration: 0.4s; }
/* Container Queries - 组件级响应式 */ .card-container { container-type: inline-size; container-name: card; } @container card (max-width: 400px) { .card { grid-template-columns: 1fr; padding: 1rem; } .card__image { aspect-ratio: 16 / 9; } } @container card (min-width: 401px) { .card { grid-template-columns: 200px 1fr; gap: 1.5rem; } } /* 不再依赖视口宽度,组件真正复用 */
精选官方文档与社区资源,持续跟进前端生态。