دستاویزاتفریم ورک کے اختلافات
Svelte
Nexy سرور پر Svelte 5 اجزاء پیش کرتا ہے، پھر Svelte انہیں براؤزر میں لے جاتا ہے۔ صفحات، ترتیب، جزیرے اور اعمال ہر فریم ورک میں ایک جیسے ہیں: یہ صفحہ سیٹ اپ کا احاطہ کرتا ہے، پھر وہ حصے جو مشترکہ معاہدوں سے مختلف ہوتے ہیں۔
ماڈیولر راؤٹر کے ساتھ، Svelte اجزاء جزیرے ہوتے ہیں .nexy ویوز کے اندر ایک کنٹرولر واپس آتا ہے: کوئی صفحہ فائل نہیں ہے اور کوئی کلائنٹ راؤٹر نہیں ہے۔
ایک پروجیکٹ شروع کریں۔
nx new my-app --template web-fbr-svelte
nx new my-app --template web-modular-svelte
ٹیمپلیٹ ایک سرور موڈ پروجیکٹ ہے جس میں Svelte جزائر ہیں۔ اس کے بجائے اشارے کا جواب دینے کے لیے بغیر کسی ٹیمپلیٹ کے nx new my-app چلائیں: روٹر، پروجیکٹ کی قسم، آیا کلائنٹ سائیڈ روٹنگ استعمال کرنا ہے، پھر فریم ورک۔
موجودہ پروجیکٹ میں Svelte کو فعال کریں۔
from nexy.core.models import NexyConfigModelfrom nexy.frontend import svelte class NexyConfig(NexyConfigModel): useFF = svelte() useAliases = {"@": "src"}import { defineConfig } from "vite";import { svelte } from "@sveltejs/vite-plugin-svelte";import nexy from "./__nexy__/vite"; export default defineConfig({ plugins: [nexy(), svelte()], customLogger: nexy.log(),});nx new اس فائل کو لکھتے ہیں۔ Nexy خود __nexy__/vite.ts لکھتا ہے، اس لیے اس میں ترمیم نہ کریں۔
| پیکج | نسخہ nx new لکھتے ہیں۔ |
|---|---|
svelte |
^5.20.2 |
@sveltejs/vite-plugin-svelte |
^5.0.0 |
قواعد
- Svelte 5. اجزاء Runes کا استعمال کرتے ہیں:
$props()،$state()، اور بچوں کے لیے ٹکڑے۔ - فی پروجیکٹ ایک فریم ورک
useFFبالکل ایک فریم ورک لیتا ہے۔useFF = [svelte(), vue()]شروع ہونے پر سرور کو روکتا ہے۔ - ایک جزو فی فائل آپ جس نام کے تحت
.svelteفائل درآمد کرتے ہیں وہ صرف وہی ٹیگ ہے جو آپ لکھتے ہیں۔
- اجزاء باہر رہتے ہیں
src/routes/، عام طور پرsrc/components/میں، اس لیے وہ صفحات نہیں ہیں۔ - سرور موڈ پروجیکٹ میں کوئی
.svelteصفحہ نہیں ہوتا، اور کلائنٹ موڈ پروجیکٹ کا کوئی.nexyصفحہ نہیں ہوتا: Nexy شروع کرنے سے انکار کرتا ہے اور فائل کو نام دیتا ہے۔ دیکھیں موڈز۔
- اجزاء
src/components/میں رہتے ہیں، اور ایک منظر انہیں جزیروں کے طور پر درآمد کرتا ہے۔
صفحات
کلائنٹ موڈ میں (useCSR = True)، صفحہ ایک .svelte فائل ہے۔
صفحہ کا جزو
صفحہ .svelte فائل کے اسکرپٹ بلاک کے ذریعہ بیان کردہ جزو ہے۔
<script lang="ts"></script> <h1>Hello</h1>متحرک طبقات
یو آر ایل پیرامیٹرز $props() رن کے ذریعے پرپس کے طور پر صفحہ تک پہنچتے ہیں:
<script lang="ts"> let { slug }: { slug: string } = $props();</script> <h1>{slug}</h1>متبادل طور پر، کسی بھی جزو میں $params اسٹور سے @nexy/client کا استعمال کریں۔
لے آؤٹ
عمل درآمد
روٹ لے آؤٹ دستاویز کے شیل کی وضاحت کرتا ہے۔ نیسٹڈ لے آؤٹ children کے ٹکڑوں کا استعمال کرتے ہوئے مواد کو سمیٹتے ہیں۔
<script lang="ts"> import type { Snippet } from "svelte"; let { children }: { children?: Snippet } = $props();</script> <html> <body> <header>My app</header> <main>{@render children?.()}</main> </body></html>جزائر
سرور موڈ میں، .nexy فائل میں درآمد کردہ ایک Svelte جز ایک جزیرہ ہے۔
درآمد کرنا
.nexy فائل کے فرنٹ میٹر میں اجزاء درآمد کریں:
from "@/components/Counter.svelte" import Counter<Counter start=3 />from "@/components/Counter.svelte" import Counter<Counter start=3 />ہائیڈریشن کی ہدایات
جزیرہ ہائیڈریٹ ہونے پر کنٹرول کرنے کے لیے directive سہارے کا استعمال کریں:
client:load(پہلے سے طے شدہ): فوری طور پرclient:idle: جب براؤزر بیکار ہو۔client:visible: جب یہ منظر میں سکرول کرتا ہے۔client:media: جب میڈیا کا سوال مماثل ہو۔
اعمال اور نیویگیشن
کالنگ اعمال
ایکشن کال کی حالت کو منظم کرنے کے لیے useAction ہک کا استعمال کریں۔ Svelte میں، یہ ایک اسٹور لوٹاتا ہے ($ کے ساتھ پڑھیں)۔
<script lang="ts"> import { useAction } from "@nexy/client"; import { add_todo } from "@nexy/actions"; let title = $state(""); const save = useAction(add_todo, { onSuccess: () => (title = "") });</script> <form onsubmit={(e) => { e.preventDefault(); save.run({ title }); }}> <input bind:value={title} /> <button disabled={$save.pending}>Add</button></form>
نیویگیشن
کلائنٹ سائڈ ٹرانزیشن کے لیے Link جز کا استعمال کریں:
<script lang="ts"> import Link from "@nexy/Link.svelte";</script> <Link href="/about" activeClass="active">About</Link>
پروگرامیٹک نیویگیشن کے لیے، router آبجیکٹ @nexy/client سے استعمال کریں:
import { router } from "@nexy/client"; router.push("/dashboard");
URL تک رسائی
تمام مقام کا ڈیٹا اسٹورز کے طور پر فراہم کیا جاتا ہے:
$pathname: موجودہ راستہ$params: متحرک طبقات$searchParams: استفسار کی تار$location: مکمل مقام آبجیکٹ