إطار عمل وحدة التحكم
أنشئ تطبيقات React متكاملة تُعرض داخل console.log.
تعمل هذه الصفحة في وحدة التحكم لديك. افتحها باستخدام ⌘⌥JCtrl+Shift+J⌘⌥KCtrl+Shift+K⌘⌥C (فعّل ميزات المطوّرين أولًا)، وانقر على المعاينة أدناه واضغط ↑ ↓.
1import { useState } from "react";2import { AsciiFont, Box, Text, useInput } from "@textjs/app";34export default function Page() {5 const [count, setCount] = useState(0);6 useInput((e) => {7 if (e.key === "up") setCount((c) => c + 1);8 if (e.key === "down") setCount((c) => c - 1);9 });1011 return (12 <Box className="flex-col gap-1 p-2">13 <AsciiFont text="▼ TEXT.JS" />14 <Text color="muted">React 19 in console.log</Text>15 <Text bold color="accent">count = {count}</Text>16 </Box>17 );18}React 19
يدعم Text.js العرض المتزامن ومكوّن Suspense وحدود الأخطاء.
App Router
تتحول المجلدات في app/ إلى مسارات وتخطيطات، وتعمل أزرار الرجوع والتقدّم والروابط العميقة.
شبكة متجاوبة
تلائم الشبكة لوحة DevTools المثبّتة عند أي مستوى تكبير للصفحة.
إدخال لوحة المفاتيح
تصل ضغطات المفاتيح واللصق وتركيب النص عبر IME إلى التطبيق من خلال عنصر <textarea> مخفي واحد.
جداول ومخططات ونماذج واختصارات
<Box><Stack><Grid><SplitPane><ScrollBox><Center>
<List><Table><Tree><Markdown><Code><Diff>
<LineChart><BarChart><Sparkline><ProgressBar><Gradient><Image>
<Input><Select><Checkbox><Switch><Slider><Dialog>
useKeymap<KeyHelp><KeyHints><CommandPalette><StatusBar>useFocus
كل إطار متغير هو استدعاء واحد للدالة console.log
لا يصل التثبيت الذي لا يغير أي خلية إلى وحدة التحكم.
- React 19
01تثبيت
تثبّت React التغييرات عبر مُصالِح مخصص.
- Yoga
02التخطيط
تخطط Yoga الصناديق على خلايا كاملة.
- CellBuffer
03رسم
تُعاد رسْم الصفوف المتضررة فقط.
- تجزئة الصف
04بوابة التغييرات
تتوقف الإطارات غير المتغيرة هنا.
- RLE
05ترميز
تتحول 3,200 خلية إلى 149 من وحدات span بصيغة
%c. - console.log
06إخراج
تُلحق الإطارات بفاصل لا يقل عن 66 ms.
الإطارات الملحقة
يترك مسح وحدة التحكم قبل كل إطار الوحدة فارغة حتى ترسم DevTools الإطار التالي. تلحق Turbolog كل إطار بدلًا من ذلك.
قراءة المقالclear() + log()70.6% فارغlog(), appended1.0% فارغ%c لعدد 3,200 خليةعرض المسارات على الخادم
صدّر runtime = "server" لعرض مسار ومكوّناته غير المتزامنة على الخادم. يحمّل المتصفح مشغّل إطارات بحجم 21 kB (gzip) بدلًا من تطبيقك.
1import { Suspense } from "react";2import { Box, Text } from "@textjs/app";3import { db } from "@/lib/db";45export const runtime = "server";67async function Deploys() {8 const rows = await db.deploys.latest(5);9 return rows.map((d) => (10 <Text key={d.id}>{`${d.state} ${d.branch}`}</Text>11 ));12}1314export default function Page() {15 return (16 <Box className="flex-col p-1">17 <Text bold>Deployments</Text>18 <Suspense fallback={<Text color="muted">Loading…</Text>}>19 <Deploys />20 </Suspense>21 </Box>22 );23}- العرض المسبق الجزئييُرسل الإطار الأول لكل مسار ثابت ضمن HTML الخاص به. تعرضه وحدة التحكم قبل تحميل JavaScript.
- middlewareيعمل
middleware.tsقبل الطلبات المطابقة، باستخدامNextRequestوNextResponseوconfig.matcher. - التخزين المؤقتتخزّن
revalidateوunstable_cacheوrevalidateTagمعالجات المسارات والبيانات مؤقتًا، مع تقديم النسخة القديمة أثناء إعادة التحقق. - محوّلات النشريستهدف الأمر
text build --adapterالخياراتstaticأوbunأوvercelأوcloudflare. تحتاج المسارات المعروضة على الخادم إلىbunأوtext start.
التشغيل في الطرفيات والوكلاء أيضًا
DevToolstext dev
تكتب Turbolog كل إطار كوحدات span بصيغة %c في استدعاء واحد للدالة console.log.
الطرفيةtext run
يعرض text run تطبيق App Router نفسه باستخدام ANSI بالألوان الحقيقية ويشغّل معالجات المسارات داخل العملية.
وكلاء البرمجةtext mcp
عبر MCP، يتنقل الوكلاء بين المسارات ويضغطون المفاتيح ويقرؤون كل إطار كنص عادي.
البرمجة باستخدام OpenCode في DevTools
OpenCode Lite هو واجهة OpenCode النصية المعاد بناؤها باستخدام Text.js لتعمل في وحدة تحكم المتصفح.
بيئة تجريبية
يجيب وكيل مبرمج مسبقًا عن أي طلب، دون تثبيت أي شيء.
أمر واحد
شغّل bunx @textjs/opencode@latest proxy وأدخل الرمز الذي يطبعه. تتصل الصفحة بخدمة OpenCode على جهازك.
نماذجك وجلساتك
اختر أي نموذج معدّ على خادمك باستخدام /models. تأتي الجلسات والوكلاء والنماذج من خادم OpenCode الخاص بك.
أدوات التحرير والتدقيق والاختبار
إضافة DevTools
تضيف لوحة تضم شجرة المكوّنات وفاحص إطارات وخطًا زمنيًا لكل إطار.
لوحة Text.jsVS Code
تعرض معاينة للإطار بجوار شيفرتك وتنشئ هياكل ملفات App Router.
⌘K VESLint
ترصد وسوم DOM في مكوّنات وحدة التحكم، والمربعات داخل النص، والمحارف غير المتوفرة في Menlo.
eslint-plugin-textjsالاختبار
اعرض خارج الشاشة، واضغط المفاتيح، وتحقق من lastFrame() في أي مشغّل اختبارات.
رموز الأخطاء
ترتبط الأخطاء والتحذيرات ذات الرمز TX بصفحة تشرح الحل.
REPL في وحدة التحكم
أوقف التطبيق الجاري مؤقتًا، وغيّر حجمه، واعرض مخططه الهيكلي، وانسخه من موجّه وحدة التحكم.
window.textمن اليمين إلى اليسار
ينفّذ خوارزمية Unicode ثنائية الاتجاه ويجتاز جميع حالات BidiTest.txt البالغ عددها 770,241.
خطوط FIGlet
يحلّل ملفات .flf ويطابق 273 مخرجًا مسجّلًا من الملف الثنائي figlet.
إنشاء لوحة نشر في وحدة التحكم
تضم الدورة المجانية 10 فصلًا وتستغرق نحو 65 دقيقة.