关于 wayfinder
Wayfinder 为 Laravel 路由和控制器生成 TypeScript 函数与类型,适合需要在客户端代码中调用后端路由的团队。它提供类型安全的路由调用,并使生成代码与路由定义保持同步。
主要功能
- 01生成类型安全的 TypeScript 路由函数
- 02导入控制器和命名路由
- 03获取 HTTP 方法与 URL
- 04处理路由参数和查询参数
- 05生成 HTML 表单属性
适用场景
- 01在客户端代码中调用 Laravel 路由
- 02使用路由生成表单的 action 和 method
- 03路由变更后同步前端调用
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ markhamsquareventures/ essentials --skill wayfinder安装后在 Claude Code 中输入/wayfinder确认已加载。
详细介绍
Wayfinder
说明
Wayfinder 可为 Laravel 控制器和路由生成 TypeScript 函数和类型,供客户端代码导入。它提供类型安全,并自动同步后端路由与前端代码。
开发指南
- 始终优先使用命名导入,以便进行摇树优化(例如,
import { show } from '@/actions/...') - 避免默认导入控制器(以免影响摇树优化)
- 如果遇到错误,请在路由发生更改后运行
php artisan wayfinder:generate
功能概览
- 表单支持:使用
.form()和--with-form标志生成 HTML 表单属性——<form {...store.form()}>→action="/posts" method="post" - HTTP 方法:调用
.get()、.post()、.patch()、.put()、.delete()指定方法——show.head(1)→{ url: "/posts/1", method: "head" } - 可调用控制器:直接导入并作为函数调用。例如,
import StorePost from '@/actions/.../StorePostController'; StorePost() - 命名路由:从
@/routes/导入非控制器路由。例如,路由名称为post.show时,使用import { show } from '@/routes/post'; show(1) - 参数绑定:识别路由键(例如,
{post:slug}),并接受匹配的对象属性——show("my-post")或show({ slug: "my-post" }) - 查询合并:使用
mergeQuery与window.location.search合并;将值设为null即可移除——show(1, { mergeQuery: { page: 2, sort: null } }) - 查询参数:在选项中传入
{ query: {...} }以追加参数——show(1, { query: { page: 1 } })→"/posts/1?page=1" - 路由对象:函数返回
{ url, method }结构的对象——show(1)→{ url: "/posts/1", method: "get" } - 提取 URL:使用
.url()获取 URL 字符串——show.url(1)→"/posts/1"
示例
// 导入控制器方法(可进行摇树优化) import { show, store, update } from '@/actions/App/Http/Controllers/PostController'// 获取包含 URL 和方法的路由对象...
show(1) // { url: "/posts/1", method: "get" }
// 仅获取 URL...
show.url(1) // "/posts/1"
// 使用指定的 HTTP 方法...
show.get(1) // { url: "/posts/1", method: "get" }
show.head(1) // { url: "/posts/1", method: "head" }
// 导入命名路由...
import { show as postShow } from '@/routes/post' // 路由名称为 'post.show'
postShow(1) // { url: "/posts/1", method: "get" }
Wayfinder + Inertia
如果你的应用使用 Inertia 的 <Form> 组件,可以使用 Wayfinder 自动生成表单操作地址和方法。
评论
支持 Markdown