SuperAPI AI 工具集

farmjs

前端与建站

查看项目

更新于 10-28 19:59

技能介绍

Farm.js 是一个仍在积极开发中的全栈应用框架。本技能面向 Farm.js 应用与集成的构建、调试、迁移、文档编写、测试和部署工作。使用时需要以实际检出的代码仓库为准,不能根据旧版 beta 或其他框架推断当前 API。主要参考位置包括 README.md、docs/src/app/docs/、packages/farm/src/、packages/cli/src/、packages/farm-integrations/src/ 与 examples/**,当前版本以 packages/farm/package.json 为准。

用途与工作方式

使用前先检查 package.json、锁文件、farm.config.ts 与 src/app 目录,确认所选渲染器和部署目标,然后参考最近的示例保持代码风格一致。定位文件时优先使用 rg。集成相关改动需要同时验证静态类型和目标环境的生成构建;涉及 Prisma 时,应在 tsc 或 farm build 前立即执行 prisma generate。若需确认运行时解析行为,可使用 farm doctor 或 farm explain <path>,不要猜测。

应用结构

使用 app 目录组织路由:src/app/layout.tsx 为布局,page.tsx 为路由页面,loading.tsx 与 error.tsx 为可选的加载与错误边界,users/[id]/page.tsx 为动态路由。核心类型从 @farm.js/core 导入 PageProps、LayoutProps;客户端组件从 @farm.js/core/client 导入 Link、createApiClients。使用 React hooks、浏览器 API 或仅客户端集成调用时需加 "use client"。

创建与渲染器

用 pnpm create @farm.js/app 脚手架创建项目,支持 --template、--renderer、--typescript 等参数,并可用 --list-templates 查看模板。React 是默认渲染器,Basic 与 Better Auth 起始模板支持 react、preact、solid、vue、svelte;其他集成模板可能仍仅支持 React。非默认渲染器需在 farm.config.ts 中通过适配器选择,例如 renderer: vue()。不同渲染器使用各自的组件扩展名,不能在同一路由树中混用。升级时使用 farm upgrade --beta 或 --latest 一并升级所有 Farm 包,并保留本地 workspace:、file: 等依赖。

配置与路由

配置使用 defineConfig(旧名 defineFarmConfig 为已弃用别名),常见字段包括 extends、srcDir、renderer、api、experimental.serverComponents、integrations、auth、mcp、agent、theme、storage.mounts、migrations、i18n、cron、docs/md/mdx、deploy、routeRules、security、serverActions、images、performance、openapi、plugins、redirects()、headers()、rewrites()、vite 等。路由基于文件系统映射,支持动态路由、catch-all、可选 catch-all、路由组、命名插槽与拦截路由,并生成类型化 Link href。元数据路由文件可生成 sitemap.xml、robots.txt、manifest.webmanifest、llms.txt 与 llms-full.txt。

国际化

在 farm.config.ts 中直接配置 i18n,包括 locales、defaultLocale、fallbackLocale、routing、strict 等。语言目录放在 src/messages/<locale>.json,键与 ICU 变量由 TypeScript 校验。服务端从 @farm.js/core/i18n/server 使用 getLocale、t,客户端从 @farm.js/core/i18n/client 使用 useLocale、useTranslations。显式 locale URL 优先于 cookie 与 Accept-Language。

类型化 API 与集成

API 路由位于 src/app/api/**/route.ts,推荐使用 createEndpoint 获得输入校验(Zod 或标准 schema)与生成的调用方类型。用 src/lib/api.ts 中的 createApiClients<APIRouter> 返回 { api, apiClient }:api 在服务端请求中本地分发,apiClient 走 HTTP,两者都返回 { data, error, key },支持缓存、失效、重试、乐观更新、useMutation、useFetcher。若同时使用集成,可在同一工厂中传入集成注册类型,通过 api.integrations.* 调用。类型化变更与读取可使用 createServerFn、createServerQuery。路由与查询参数可用 loadRouteParams、loadSearchParams 及 @farm.js/core/query 下的解析器处理。

集成与认证

集成在仅服务端模块中定义,并在 farm.config.ts 的 integrations 中挂载,对象键即命名空间。集成可贡献路由、类型化调用方、中间件、React provider、数据库 schema、配置校验、插件与生命周期钩子。使用 farm add integration 管理依赖与接线,可用 --list 与 --ui 参数。当前集成家族涵盖 AI、Stripe、Autumn、Polar、Resend、Trigger.dev、Inngest、Unkey、Cloudflare agents、Eve、Auth0、Auth.js、Better Auth、Clerk、Supabase、WorkOS、自定义集成、UI 注册表与 ORM 数据等。普通邮箱密码认证可安装 @farm.js/auth 并设 auth: true,生产流量前运行 farm auth migrate;不要同时配置顶层 auth 与 integrations.auth。

适用场景与限制

适用于 Farm.js 全栈应用的脚手架搭建、路由与配置调整、多渲染器支持、国际化、类型化 API 设计、第三方集成接入及升级迁移。需注意:框架处于开发中,API 可能变化,必须以仓库为准;渲染器组件格式不可在一个路由树内混用;类型化 API 上服务端缓存为请求局部且无 HTTP 回退;集成调用的 { data, error } 结果与缓存规则与普通应用路由不同。本资料未提供收费、价格或平台要求等信息。