项目结构
app/ 目录、text.config.ts 和 text CLI。
app/ 中的文件夹定义路由,特殊文件定义各路由的 UI。
#文件夹
| 文件夹 | 用途 |
|---|
app | 路由、布局和路由处理程序 |
lib | 不参与路由的共享模块 |
public | 静态资源 |
#路由文件
| 文件 | 用途 |
|---|
layout.tsx | 路由段的共享 UI |
page.tsx | 可通过路由访问的页面 |
loading.tsx | Suspense 后备界面 |
error.tsx | 错误边界 |
not-found.tsx | 未匹配的 URL |
route.ts | API 端点 |
app/├── layout.tsx → shared shell├── page.tsx → /├── sessions/│ ├── page.tsx → /sessions│ └── [id]/page.tsx → /sessions/:id└── api/health/route.ts → GET /api/health
#动态路由
| 文件夹 | URL | params |
|---|
[id] | /sessions/42 | { id: "42" } |
[...slug] | /docs/a/b | { slug: ["a", "b"] } |
#text.config.ts
import { defineConfig } from "@textjs/app";export default defineConfig({ title: "Acme", viewport: { width: 120, height: 36, theme: "geistDark" }, hints: [{ keys: "↑ ↓", label: "count" }],});
| 选项 | 默认值 | 说明 |
|---|
title | "" | 页面和 FocusPad 的标题 |
viewport | 适应控制台,否则为 120×36 | responsive(默认为 true)、后备尺寸 width × height、theme |
hints | [] | 页面 FocusPad 上显示的两个或三个按键 |
action | press <first hint> | 获得焦点后要执行的操作,例如 "type a prompt" |
devIndicators | true | 控制台内的开发浮层([▼]) |
focusHint | true | 页面未获得焦点时,在控制台最后一行上方显示“点击页面以使用键盘” |
rewrites | [] | 重写和代理 |
ansi | { cols: 80, rows: 24 } | curl 和终端客户端的帧尺寸,设为 false 则向这些客户端提供 HTML |
#CLI
| 命令 | 说明 |
|---|
text dev | 支持快速刷新的开发服务器 |
text build | 生产构建 |
text start | 提供构建产物和路由处理程序服务 |
text run | 在终端中渲染应用(终端) |
text mcp | 向编程智能体提供应用服务(MCP) |
在 GitHub 上编辑此页