التشغيل في الطرفية
اعرض تطبيق 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
لمكوّن واحد، أو لواجهة سطر الأوامر الخاصة بك:
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 | إطارات التطبيق | احتجاز الإخراج حتى الخروج |