اجرا در ترمینال
همان داشبورد را با دستور text run بهصورت تمامصفحه در ترمینال اجرا کنید.
در این فصل
- `text run`
- خروج با `q`
- CLI اختصاصی شما
- تفاوتها
دستور text run همان برنامه را در ترمینال اجرا میکند. چیدمان، کامپوننتها، نقشهٔ کلیدها و کنترلگرهای مسیر مشترک هستند و خروجی بهجای spanهای CSS با %c، از نوع ANSI با رنگ واقعی است.
text run
یک اسکریپت اضافه و آن را اجرا کنید:
"scripts": { "dev": "text dev", "build": "text build",حذفشده: "start": "text start"افزودهشده: "start": "text start",افزودهشده: "tui": "text run" },bun run tui # render ./app at /bun run tui -- --path /deployments # start on another routeدستور text run همهٔ فایلهای app/ را وارد میکند، App Router را با تاریخچهای در حافظه سوار میکند و آن را بهصورت تمامصفحه رسم میکند. <Link>، useRouter()، notFound() و redirect() بدون تغییر کار میکنند و فراخوانیهای هممبدأ fetch("/api/…") کنترلگرهای مسیر شما را در همان فرایند اجرا میکنند. میانبر Ctrl+C برنامه را میبندد و سابقهٔ پیمایش شما را بازیابی میکند. به Bun نیاز دارد.
خروج با q
کاربران ترمینال انتظار کلید q را دارند. متد useApp().exit() برنامه را آنمانت میکند و ترمینال را به حالت قبل برمیگرداند؛ در مرورگر، برنامهٔ کنسول را آنمانت میکند.
افزودهشده: import { useApp } from "@textjs/app";export default function RootLayout({ children }: { children?: ReactNode }) {افزودهشده: const app = useApp(); useInput((e) => { if (e.key === "backspace") router.back();افزودهشده: if (e.input === "q") app.exit(); });CLI اختصاصی شما
برای یک کامپوننت، از renderToTerminal استفاده کنید. این تابع یک عنصر را بدون App Router مانت میکند و فراخوانی fetch("/api/…") فقط هنگام اجرا با text run به کنترلگرهای مسیر شما دسترسی دارد، پس دادههای کامپوننت را به آن بدهید:
import { renderToTerminal } from "@textjs/app/terminal";import { Table } from "@textjs/app";import { DEPLOYMENTS } from "./lib/deployments";const columns = [{ key: "commit", header: "Commit" }, { key: "project", header: "Project", width: 10 }];const app = await renderToTerminal(<Table columns={columns} rows={DEPLOYMENTS} autoFocus />);await app.waitUntilExit();آن را با دستور bun cli.tsx اجرا کنید. کامپوننت DeploymentsPage ردیفهایش را واکشی میکند، پس به text run نیاز دارد.
تفاوتها
ترمینالها سریعتر بازنقاشی میکنند (تا 60 fps بهجای حدود 15) و اندازهٔ شبکه را بهجای کنسول متصلشده به لبهٔ پنجره، با خود پنجره تنظیم میکنند. تصاویر بهجای URL به دادههای پیکسلی نیاز دارند. بقیهٔ موارد، از جمله این داشبورد، از همان کد استفاده میکنند.
امتحان کنید
این Acme Deploys در پایان فصل است که در DevTools اجرا میشود. روی پد کلیک کنید، سپس از کلیدهای زیر استفاده کنید.
باز کردن کنسول
برنامه در DevTools رندر میشود.ابتدا گزینهٔ «نمایش قابلیتها برای توسعهدهندگان وب» را در تنظیمات Safari ← پیشرفته فعال کنید. سپس اینجا کلیک کنید و Enter را فشار دهید.
باز کردن در رایانه
این برنامه در کنسول DevTools رندر میشود که به مرورگر دسکتاپ نیاز دارد.
آزمون
2 پرسشبرای تکمیل فصل به همهٔ پرسشها پاسخ دهید.