دستاویزاتفریم ورک کے اختلافات
React
Nexy سرور پر React 19 اجزاء پیش کرتا ہے، پھر React انہیں براؤزر میں ہائیڈریٹ کرتا ہے۔ صفحات، ترتیب، جزیرے اور اعمال ہر فریم ورک میں ایک جیسے ہیں: یہ صفحہ سیٹ اپ کا احاطہ کرتا ہے، پھر وہ حصے جو مشترکہ معاہدوں سے مختلف ہوتے ہیں۔
ماڈیولر راؤٹر کے ساتھ، React اجزاء جزیرے ہوتے ہیں .nexy ویوز کے اندر ایک کنٹرولر واپس آتا ہے: کوئی صفحہ فائل نہیں ہے اور کوئی کلائنٹ راؤٹر نہیں ہے۔
ایک پروجیکٹ شروع کریں۔
nx new my-app --template web-fbr-react
nx new my-app --template web-modular-react
ٹیمپلیٹ ایک سرور موڈ پروجیکٹ ہے جس میں React جزائر ہیں۔ اس کے بجائے اشارے کا جواب دینے کے لیے بغیر کسی ٹیمپلیٹ کے nx new my-app چلائیں: روٹر، پروجیکٹ کی قسم، آیا کلائنٹ سائیڈ روٹنگ استعمال کرنا ہے، پھر فریم ورک۔
موجودہ پروجیکٹ میں React کو فعال کریں۔
from nexy.core.models import NexyConfigModelfrom nexy.frontend import react class NexyConfig(NexyConfigModel): useFF = react() useAliases = {"@": "src"}import { defineConfig } from "vite";import react from "@vitejs/plugin-react";import nexy from "./__nexy__/vite"; export default defineConfig({ plugins: [nexy(), react()], customLogger: nexy.log(),});nx new اس فائل کو لکھتے ہیں۔ Nexy خود __nexy__/vite.ts لکھتا ہے، اس لیے اس میں ترمیم نہ کریں۔
| پیکج | نسخہ nx new لکھتے ہیں۔ |
|---|---|
react، react-dom |
^19.2.5 |
@vitejs/plugin-react |
^5.2.0 |
@types/react، @types/react-dom |
دیو انحصار |
قواعد
- فی پروجیکٹ ایک فریم ورک
useFFبالکل ایک فریم ورک لیتا ہے۔useFF = [react(), vue()]شروع ہونے پر سرور کو روکتا ہے۔
- صفحات ہیں۔
.tsx. React اجزاء کے لیے.tsxاور.jsxکا مالک ہے، لیکنsrc/routes/کے تحت صرف ایک.tsxفائل ہی صفحہ بن جاتی ہے۔ - اجزاء باہر رہتے ہیں
src/routes/، عام طور پرsrc/components/میں، اس لیے وہ صفحات نہیں ہیں۔ - سرور موڈ پروجیکٹ کا کوئی
.tsxصفحہ نہیں ہوتا، اور کلائنٹ موڈ پروجیکٹ کا کوئی.nexyصفحہ نہیں ہوتا: Nexy شروع کرنے سے انکار کرتا ہے اور فائل کو نام دیتا ہے۔ دیکھیں موڈز۔
- اجزاء
src/components/میں رہتے ہیں، اور ایک منظر انہیں جزیروں کے طور پر درآمد کرتا ہے۔
صفحات
کلائنٹ موڈ میں (useCSR = True)، صفحہ ایک .tsx فائل ہے۔
صفحہ کا جزو
ایک صفحہ فائل کا ڈیفالٹ ایکسپورٹ ہوتا ہے۔ اگر کوئی ڈیفالٹ ایکسپورٹ موجود نہیں ہے، تو Nexy پہلی نامزد ایکسپورٹ کو چنتا ہے۔
export default function Home() { return <h1>Hello</h1>;}متحرک طبقات
URL پیرامیٹرز useParams ہک کے ذریعے دستیاب ہیں:
import { useParams } from "@nexy/client"; export default function Post() { const { slug } = useParams<{ slug: string }>(); return <h1>{slug}</h1>;}لے آؤٹ
عمل درآمد
روٹ لے آؤٹ دستاویز کے شیل کی وضاحت کرتا ہے۔ نیسٹڈ لے آؤٹ مواد کو اپنے نیچے سمیٹتے ہیں۔
import type { ReactNode } from "react"; export default function RootLayout({ children }: { children: ReactNode }) { return ( <html> <body>{children}</body> </html> );}جزائر
سرور موڈ میں، ایک React جز ایک .nexy فائل میں درآمد کیا گیا ایک جزیرہ ہے۔
درآمد کرنا
.nexy فائل کے فرنٹ میٹر میں اجزاء درآمد کریں:
from "@/components/Counter.tsx" import Counter<Counter start=3 />from "@/components/Counter.tsx" import Counter<Counter start=3 />ہائیڈریشن کی ہدایات
جزیرہ ہائیڈریٹ ہونے پر کنٹرول کرنے کے لیے directive سہارے کا استعمال کریں:
client:load(پہلے سے طے شدہ): فوری طور پرclient:idle: جب براؤزر بیکار ہو۔client:visible: جب یہ منظر میں سکرول کرتا ہے۔client:media: جب میڈیا کا استفسار ملتا ہے۔
اعمال اور نیویگیشن
کالنگ اعمال
ایکشن کال کی حالت کو منظم کرنے کے لیے useAction ہک کا استعمال کریں:
import { useAction } from "@nexy/client";import { add_todo } from "@nexy/actions"; const { run, pending, error, data } = useAction(add_todo);// ...<button onClick={() => run({ title: "New Task" })}>Add</button>
نیویگیشن
کلائنٹ سائڈ ٹرانزیشن کے لیے Link جز کا استعمال کریں:
import { Link } from "@nexy/client"; <Link href="/about">About</Link>
پروگرامیٹک نیویگیشن کے لیے، useRouter ہک استعمال کریں:
import { useRouter } from "@nexy/client"; const router = useRouter();router.push("/dashboard");
URL تک رسائی
usePathname(): موجودہ راستہuseParams(): متحرک طبقاتuseSearchParams(): استفسار کی تارuseLocation(): مکمل مقام آبجیکٹ