التشغيل في الطرفية

اعرض تطبيق ⁦App Router⁩ أو مكوّنًا واحدًا في الطرفية باستخدام ⁦text run⁩ و renderToTerminal.

يعرض الأمر text run تطبيق ⁦App Router⁩ في الطرفية. يشترك مع المتصفح في التخطيط والمكوّنات وخرائط المفاتيح ومعالجات المسارات. يستخدم الإخراج ANSI بألوان حقيقية بدلًا من مقاطع span بتنسيق %c.

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.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

الإخراج

تُحسب فروق كل إطار صفًا بصف. تُكتب الصفوف المتغيرة فقط، محاطة بعلامات الإخراج المتزامن كي لا تعرض الطرفيات التي تدعمها إطارًا مرسومًا جزئيًا. لا تكتب التطبيقات الخاملة شيئًا.

الإدخال

يُحلّل الإدخال القياسي في الوضع الخام إلى الأحداث نفسها التي ينتجها المتصفح: الأسهم ومفاتيح الوظائف مع مفاتيح التعديل، وتركيبات Alt، واللصق المحاط بعلامات، وعجلة الفأرة ببروتوكول SGR، وبروتوكول لوحة المفاتيح kitty. تُصدَّر TerminalInputParser و parseTerminalInput لاستخدامهما في مواضع أخرى عند الحاجة.

الاختلافات

الميزةDevToolsالطرفية
وتيرة الإطاراتنحو 15 إطارًا في الثانيةحتى fps
حجم الشبكةوحدة التحكم المثبّتةنافذة الطرفية
<Image src>التحميل عبر canvasاستخدام pixels
console.logإطارات التطبيقاحتجاز الإخراج حتى الخروج
تحرير هذه الصفحة على GitHub