اجرا در ترمینال

با ⁦text run⁩ و renderToTerminal، یک برنامهٔ ⁦App Router⁩ یا یک کامپوننت را در ترمینال رندر کنید.

دستور text run یک برنامهٔ ⁦App Router⁩ را در ترمینال رندر می‌کند. چیدمان، کامپوننت‌ها، نقشهٔ کلیدها و کنترل‌گرهای مسیر با مرورگر مشترک هستند. خروجی به‌جای spanهای %c، از نوع ANSI با رنگ واقعی است.

text run              # render ./app at /text run --path /logs # start on another route

برای خروج، Ctrl+C را فشار دهید. دستور text run به Bun نیاز دارد.

text run

دستور text run تمام فایل‌های app/ را وارد می‌کند، ⁦App Router⁩ را با تاریخچه‌ای در حافظه نصب می‌کند و آن را تمام‌صفحه ترسیم می‌کند. <Link>، useRouter()، notFound() و redirect() بدون تغییر کار می‌کنند.

فراخوانی‌های هم‌مبدأ fetch("/api/...") کنترل‌گرهای route.ts شما را در همان فرایند اجرا می‌کنند، دقیقاً همان‌طور که دستور text dev آن‌ها را سرو می‌کند. سایر URLها به شبکه می‌روند.

renderToTerminal

برای یک کامپوننت یا CLI خودتان:

cli.tsxtsx
import { renderToTerminal } from "@textjs/app/terminal";import { App } from "./app";const app = await renderToTerminal(<App />);await app.waitUntilExit();

فراخوانی useApp().exit() برنامه را از حالت نصب خارج می‌کند و ترمینال را به حالت قبل برمی‌گرداند.

گزینهتوضیحات
stdin / stdoutپیش‌فرض: process.stdin / process.stdout
cols / rowsاندازهٔ ثابت (پیش‌فرض: مطابق ترمینال)
altScreenبازیابی تاریخچهٔ پیمایش هنگام خروج (پیش‌فرض true)
mouseپیمایش با چرخ ماوس (پیش‌فرض true)
exitOnCtrlCپیش‌فرض true
fpsسقف نرخ فریم (پیش‌فرض 60)
patchConsoleنگه‌داشتن خروجی console.* تا زمان خروج (پیش‌فرض true)
theme / transparentمانند createConsoleRoot

خروجی

تفاوت‌های هر فریم سطر به سطر محاسبه می‌شوند. فقط سطرهای تغییریافته نوشته می‌شوند و میان نشانگرهای خروجی همگام قرار می‌گیرند تا ترمینال‌هایی که از آن‌ها پشتیبانی می‌کنند هرگز فریمی نیمه‌ترسیم‌شده نشان ندهند. برنامه‌های بیکار چیزی نمی‌نویسند.

ورودی

ورودی stdin در حالت خام به همان رویدادهایی تجزیه می‌شود که مرورگر تولید می‌کند: کلیدهای جهت‌نما و کلیدهای تابع همراه با کلیدهای تغییردهنده، ترکیب‌های Alt، جای‌گذاری محصور در براکت، چرخ ماوس SGR و پروتکل صفحه‌کلید kitty. اگر در جای دیگری به TerminalInputParser و parseTerminalInput نیاز داشته باشید، این دو صادر می‌شوند.

تفاوت‌ها

ویژگیDevToolsترمینال
آهنگ فریم‌هاحدود 15 fpsتا fps
اندازهٔ شبکهکنسول متصل به پنجرهپنجرهٔ ترمینال
<Image src>بارگذاری از طریق canvasاستفاده از pixels
console.logفریم‌های شمانگه‌داری تا زمان خروج
ویرایش این صفحه در GitHub