传统全栈框架默认是整页更新,本文比较官方方案与成熟生态适配的局部刷新技术。React/Vue 独立前端库不在讨论范围;Inertia.js 是服务端框架与前端适配器之间的生态方案,因此单独标注,不把它写成 Laravel 官方库。
方案对比
| 框架 | 官方方案 | 核心思路 | 传输方式 | 写状态的地方 | 上手难度 | 优缺点简述 |
|---|---|---|---|---|---|---|
| Rails | Turbo (Hotwire) + Stimulus | Drive 拦截导航;Frames 局部换块;Streams 推补丁;复杂交互用 Stimulus | 普通请求 + 可选 WebSocket/SSE | 服务端模板 | 低 | 官方默认;几乎不写 JS。 |
| Laravel | Livewire | 组件式 PHP,事件触发后服务端重渲再 Morph DOM | AJAX(可配 poll) | PHP 组件属性 | 低 | 偏 CRUD / 后台;组件多了请求与 payload 变重。 |
| Laravel | Inertia.js | 服务端返回 JSON 页面 props,前端适配器渲染 | XHR / fetch | 前端组件 + 后端控制器 | 中 | 偏产品型前端;有 SPA 手感但无独立 API。与 Livewire 混用时需要明确交互边界。 |
| Phoenix | LiveView | 长连接上的服务端 UI,diff 后推补丁 | WebSocket | Elixir LiveView | 中 | 官方默认;实时交互强,绑定 Elixir。 |
| Symfony | UX Live Component | 类似 Livewire 的 Twig 组件 | AJAX | PHP + Twig | 低 | 官方 UX 路径。 |
| ASP.NET | Blazor Server | 服务端组件树,SignalR 推 UI diff | SignalR | C# 组件 | 中 | 要常驻连接,扩展成本需评估;普通 MVC/Razor 仍是整页或自管 AJAX。 |
| 相关主题:项目选型。 |