فریمورک کنسول
برنامههای فولاستک 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 با یک reconciler سفارشی کامیت میکند.
- 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کنترلگرهای مسیر و دادهها را با stale-while-revalidate کش میکنند. - آداپتورهای استقراردستور
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 را پیادهسازی میکند و هر 770,241 مورد آزمون BidiTest.txt را با موفقیت میگذراند.
قلمهای FIGlet
فایلهای .flf را تجزیه میکند و با 273 خروجی ثبتشده از فایل باینری figlet مطابقت دارد.
ساخت داشبورد استقرار در کنسول شما
این دوره رایگان 10 فصل دارد و حدود 65 دقیقه طول میکشد.