什么是 Wayfinder
Laravel Wayfinder 是一个零摩擦地把 Laravel 后端和 TypeScript 前端桥接起来的包。它会根据控制器和路由自动生成完全类型化的 TypeScript 函数,让你在前端可以像调用普通函数一样直接调用 Laravel 的端点。 URL 硬编码、路由参数手动维护、后端变化人工同步——这些统统不需要了。Wayfinder 目前是 Beta 版(当前 v0.1.x)。在 v1.0.0 发布前 API 可能会变化。所有重要变更都会记录在 CHANGELOG 中。
Ziggy 与 Wayfinder 的差异
什么是 Ziggy
Ziggy 是长期以来在 Laravel 生态里广泛使用的路由 helper。它把 Laravel 的路由定义暴露给 JavaScript 端,让你可以用route('posts.show', { id: 1 }) 这样的形式生成 URL。
为什么被 Wayfinder 取代
Ziggy 用字符串来表达路由名和参数,与 TypeScript 的契合度有限。路由名的拼写错误或参数名错误只能在运行时才暴露。 Wayfinder 是 TypeScript first 的设计,会把控制器方法生成为可导入的函数。
在基于 Inertia 的 Laravel 启动套件(React / Vue / Svelte)中,Wayfinder 已被默认采用。
安装
1. 用 Composer 安装服务端包
2. 用 NPM 安装 Vite 插件
3. 在 vite.config.js 中加入插件
生成 TypeScript 定义文件
用wayfinder:generate 命令生成 TypeScript 文件。
resources/js 下生成 3 个目录。
--path 参数。
基本用法
导入并使用 action
生成PostController 的 show 方法对应 URL 的示例。
.url()。
参数传递方式
Wayfinder 的函数支持多种形态的参数。/posts/{post:slug})时,可以直接传对应的值。
一次性导入整个控制器
也可以直接把整个控制器导入,然后调用其方法。单一 action 控制器
单一 action 控制器(Invokable Controller)对应的导入函数可以直接调用。导入命名路由
按路由名访问时使用routes/ 下的文件。
查询参数
所有 Wayfinder 函数都能通过query 选项加查询参数。
mergeQuery。
表单变体
想在传统 HTML 表单中使用时,加上--with-form 参数生成,然后用 .form 变体。
Inertia 与 Wayfinder 的搭配
把 Inertia 的 form helper 与 Wayfinder 组合起来,就可以在不写任何 URL 字符串的情况下完成表单提交。Link 组件里也可以这样用。
在启动套件中的采用
用laravel new 创建新项目并选择 React / Vue / Svelte 时,Wayfinder 会作为自动配置好的组件被引入。启动套件里包含:
- Composer 包
laravel/wayfinder - NPM 包
@laravel/vite-plugin-wayfinder vite.config.js里已加入插件配置- 生成目录已经加入
.gitignore
处理和保留字冲突的方法名
对delete、import 这类和 JavaScript 保留字重名的控制器方法,会加上 Method 后缀。
当前状态(v0.1.x)
当前稳定版位于v0.1.x 分支。截至 2026 年 3 月的最新版本是 v0.1.15。
v0.1.x 系列主要更新记录
next 分支中开发中的下一代能力
next 分支正在开发相较 v0.1.x 大幅扩展的下一版。
生成的 TypeScript 范围大幅扩展
v0.1.x 只针对路由和控制器 action,而下一版会把下面的东西都作为 TypeScript 生成。Form Request 的 TypeScript 类型生成
Eloquent 模型的类型生成
types.d.ts 里生成类型:
PHP Enum 转 TypeScript
输出目录变化
v0.1.x 中会分成actions/、routes/、wayfinder/ 3 个目录,而下一版把它们汇集到 resources/js/wayfinder 下。
从 v0.1.x 到 next 的主要变化
- 导入路径从
@/actions/...变成@/wayfinder/... - 废弃
--skip-actions、--skip-routes、--with-form参数,统一改到配置文件 types.ts改名为types.d.ts
总结
Laravel Wayfinder 把 Ziggy 提供的“在 JavaScript 里引用 Laravel 路由”的能力用 TypeScript first 的方式重新设计。通过导入并调用生成的函数,类型安全、IDE 支持和树摇都得到了显著改善。 即便是当前的 v0.1.x,对路由和控制器 action 的类型安全引用也已经足够好用,并且在基于 Inertia 的 Laravel 启动套件中已成为标配。next 分支正在开发的下一版会把 Form Request、Eloquent 模型、Enum、Inertia 页面 props 也一起生成为 TypeScript,朝着更全面的类型安全基座演进。
Laravel Wayfinder GitHub
源代码、CHANGELOG、Issue 请查看这里。
Vite Plugin Wayfinder
Vite 插件的配置项详情请查看这里。