SuperAPI AI 工具集

solidjs-knowledge-patch

前端与建站

查看项目

更新于 10-16 01:35

技能介绍

用途:在修改 SolidJS、Solid Router 或 SolidStart 代码时提供迁移规则,强调先确认 API 属于哪个包再迁移——同名或近似的 data、response、route 辅助函数不一定共享同一包或运行时。

主要能力与内容分区:一、迁移与 UI:编译器校验、包解析、customized built-ins、布尔属性、非委托事件。二、响应式与异步:query、async-data 辅助函数、server functions、流式 RPC。三、路由与 SolidStart:文件系统路由、路由定义、预加载、导航、运行时与请求 API。四、Stores 与 actions:action 生命周期、提交、表单编码、重新校验、响应、重定向、single-flight 变更。建议只读相关参考文件;当变更会重定向或重新校验路由数据时,路由与 actions 两部分都要读。

迁移排查要点:router 数据辅助函数 cache 需改名 query;路由选项 load 改名为 preload;公共 router 类型 Route 改用 RouteDescription;oncapture: 改为带 capture: true 的 on: 监听器对象;嵌套 anchor 等会被浏览器重写的结构需修正源 HTML;SSR 不应调用客户端编译器方法;旧 resolver 依赖 browser 字段需改为条件导出解析;SolidStart 服务端收到非 JSON 响应需确保安装含 1.3.2 传输修复的版本。不要因为模块解析成功就认定该 API 在当前运行时安全。

JSX 与 DOM:用 is 让 customized built-in 元素走 custom-element 处理;用 bool: 指定布尔属性语义;非委托事件可通过 on: 传入带 once、passive、capture 的监听器对象,优先于 oncapture:。

路由数据与 action:query 替代 cache 并保留响应头;createAsyncStorage 提供存储型变体;createAsync 暴露 .latest;action 支持 onComplete、暴露错误并返回处理后的响应;Submission 从包顶层导入;SearchParams 以公共类型导入;usePreloadRoute 获取预加载辅助;preloadRoute 可传入字符串路径。导航时只清理已完成的 action;action 名称会被哈希而非替换为 mutate;空字符串或空数组表示不重新校验;表单 action 默认使用 URL 编码 body,仅在非 multipart/form-data 时传 URLSearchParams。

文件系统路由:用 FileRoutes 与 Router 组合,FileRoutes 同时以组件和函数形式暴露配置;括号片段用于路由组与不出现在 URL 的树形塑造;[[name]] 为可选参数,[...name] 为单段斜杠分隔的 catch-all;路由模块用命名导出的 route 配置 matchFilters,不再重复 component。

服务端执行与传输:函数加 "use server" 后,服务端调用为直接调用,浏览器调用变为 RPC,可传输 promise、stream、async iterable。变更后导航可让 router 在变更响应中流式传输目标数据,避免瀑布式串行。传输升级需注意兼容性:SolidStart 1.1 改用 TanStack server-functions 插件,1.3 改用 Seroval JSON 模式,1.3.2 修复 1.3.0 对意外响应的循环问题。

请求与响应:API 路由可导出 OPTIONS 以直接响应 CORS 预检,返回 Response;请求局部状态通过扩展 App.RequestEventLocals 类型,getServerFunctionMeta 从 @solidjs/start 导入而非已废弃的 @solidjs/start/server。响应辅助函数返回 Response 对象,需通过 query().handleResponse() 保留响应头、转发服务端数据调用产生的绝对重定向,并在重定向响应中保留全部 Set-Cookie。

运行时检查:区分基于 Vite 的 SolidStart 2 alpha 与 1.x Vinxi 运行时;alpha 使用 vite preview;服务端类型按需从 @solidjs/start/server 导入;API 路由遵循配置的 base URL;项目不使用 public 时需配置公共资源目录;v1 修复保持在 1.x 线。具体版本、收费与效果等资料未提供。