دستاویزاتاعلی درجے کی
Nexy کیسے کام کرتا ہے۔
آپ کی لکھی ہوئی فائل اور براؤزر میں موجود صفحہ کے درمیان کیا ہوتا ہے: درخواست کی پرتیں، کون کیا بناتا ہے، اور Nexy آپ کی درخواست پر کیا چھوڑتا ہے۔ شروع کرنے کے لیے آپ کو اس صفحہ کی ضرورت نہیں ہے۔ یہ بعد میں "یہ اس طرح کیوں کام کرتا ہے" کے سوالات کا جواب دیتا ہے۔
تہوں
Browser
│
▼
Uvicorn ───── ASGI transport
│
▼
Middleware ── sessions, CORS, gzip, trusted hosts, your own
│
▼
Router ────── FBR | Modular | Custom ── picks the file that answers
│
▼
Renderer ──── HTML (Jinja2, Markdown, Node) or JSON
│
▼
Response| تہہ | ذمہ داری | نہیں کرتا |
|---|---|---|
| Uvicorn | کنکشن قبول کریں، ASGI بولیں۔ | جانتے ہیں کہ صفحہ کیا ہے؟ |
| مڈل ویئر | درخواست کو سجائیں: سیشن، CORS، gzip، قابل اعتماد میزبان، HTTPS ری ڈائریکٹ، آپ کا | ایک راستہ منتخب کریں |
| راؤٹر | یو آر ایل کو کسی فائل سے اس کی ترتیب، انحصار اور خرابی والے صفحات کے ساتھ ملا دیں۔ | مواد پیدا کریں |
| پیش کرنے والا | صفحہ کو چلائیں اور اس کا نتیجہ HTML یا JSON میں تبدیل کریں۔ | اپنا ڈیٹا حاصل کریں۔ |
| کلائنٹ | Vite اور آپ کا فریم ورک: بنڈل، ہائیڈریشن، کلائنٹ نیویگیشن | سرور کی درخواست کا جواب دیں۔ |
کون کیا بناتا ہے۔
| اداکار | کا مالک ہے۔ | مالک نہیں ہے۔ |
|---|---|---|
| نیکسی | روٹنگ، سرور رینڈرنگ، ایکشنز، .nexy تالیف، ایک اصل |
اجزاء، رد عمل، ڈیٹا |
| Vite | کلائنٹ بنڈلز، دیو سرور، ہاٹ ری لوڈ | روٹنگ، سرور رینڈرنگ، ایکشنز |
| آپ کا فریم ورک | اجزاء، رد عمل، ماحولیاتی نظام | روٹنگ، دستاویز (Nexy اس کے لے آؤٹ سے پوچھتا ہے) |
| آپ کی درخواست | ڈیٹا، تصدیق، اجازت، کاروباری قواعد | نقل و حمل، رینڈرنگ |
ٹیبل کے پیچھے کا اصول: Nexy وہی بناتا ہے جو اس کے پاس ہوتا ہے، اور جو کچھ Vite مرتب کرتا ہے اسے کبھی بھی مرتب نہیں کرتا۔
روٹنگ سسٹم
src/routes/ کے تحت راستہ چار اصولوں سے یو آر ایل بن جاتا ہے۔
| فائل | URL |
|---|---|
blog/index.nexy |
/blog |
blog/[slug].nexy |
/blog/hello |
blog/[...parts].nexy |
/blog/a/b |
(marketing)/about.nexy |
/about |
توسیع کبھی ظاہر نہیں ہوتی؛ index اس کے فولڈر کا روٹ ہے۔ قوسین میں ایک فولڈر سیگمنٹ کو شامل کیے بغیر فائلوں کو گروپ کرتا ہے۔
جب دو چیزیں ایک ہی URL کا جواب دے سکتی ہیں، پہلا رجسٹرڈ جیتتا ہے، اور Nexy ہمیشہ اس ترتیب میں رجسٹر ہوتا ہے:
- اعمال کا اختتامی نقطہ؛
- جامد فائلیں:
/public،/assets،/favicon.ico؛ - ایک ماڈیولر
APIRouter(useRouter)؛ - فائل روٹس، سب سے پہلے سب سے مخصوص: جامد راستے، پھر سب سے زیادہ مقررہ حصوں کے ساتھ متحرک راستے، پھر کیچ-آل۔
مساوی خصوصیت کے دو فائل روٹس حروف تہجی کے راستے کی ترتیب میں رجسٹرڈ ہیں، لہذا [id].nexy جواب [slug].nexy سے پہلے۔ اس لیے ایک ماڈیولر روٹ اسی راستے کے ساتھ ایک صفحہ کو مات دیتا ہے۔ یہ ایک ترجیحی آرڈر ہے جس پر آپ بھروسہ کر سکتے ہیں، نہ کہ ٹائی بریک کے اصول کے ساتھ کھیلنے کے لیے: ایک URL ایک فائل دیں۔
دیکھنے کا نظام
فائل کی توسیع فیصلہ کرتی ہے کہ یہ کیا ہے، اور پروجیکٹ کی تشکیل فیصلہ کرتی ہے کہ کون سی ایکسٹینشن فعال ہیں۔
| توسیع | فعال جب | کی طرف سے مرتب | کے طور پر خدمات انجام دیں۔ |
|---|---|---|---|
.nexy |
سرور موڈ | Nexy: فرنٹ میٹر بن جاتا ہے Python، مارک اپ بن جاتا ہے Jinja2 | ایک صفحہ |
.md |
ہمیشہ | Nexy: GitHub-flavored Markdown، ہیڈنگ آئی ڈیز، مواد کا جدول | ایک صفحہ، قریب ترین لے آؤٹ کے اندر |
.mdx |
ہمیشہ | Vite، React یا Preact کے ساتھ | ایک جزو کا راستہ |
.tsx |
useFF ہے React، Solid یا Preact |
Vite اور فریم ورک | ایک جزو کا راستہ |
.vue |
useFF ہے Vue |
Vite اور Vue | ایک جزو کا راستہ |
.svelte |
useFF ہے Svelte |
Vite اور Svelte | ایک جزو کا راستہ |
.py |
ہمیشہ | Python | ایک API ہینڈلر: GET، POST، ... طریقے ہیں۔ |
ایک فائل جس کی ایکسٹینشن فعال نہیں ہے اسے وارننگ کے ساتھ چھوڑ دیا جاتا ہے، پیش نہیں کیا جاتا۔ کلائنٹ موڈ میں، سرور شروع ہونے سے پہلے .nexy کو مسترد کر دیا جاتا ہے۔ دیکھیں فائل کنونشنز۔
رینڈرنگ لائف سائیکل
تین سوالات ہر چیز کا فیصلہ کرتے ہیں جو ایک قارئین کو نوٹس دیتا ہے:
| سوال | جواب دیں۔ | صفحہ |
|---|---|---|
| HTML کون تیار کرتا ہے؟ | سرور، یا کلائنٹ کے راستے کے لیے براؤزر | انجام دینا |
| ڈیٹا کب پڑھا جاتا ہے؟ | ہر درخواست پر، ہر تخلیق نو پر، یا براؤزر میں | SSR، ISR |
| JavaScript کب آئے گا؟ | صرف ایک جزیرے کے لیے، یا پوری دستاویز کے لیے | جزائر، CSR |
سرور موڈ میں سرور ہر صفحہ کو رینڈر کرتا ہے، revalidate فی یو آر ایل ایک صفحہ کیش کرتا ہے، اور جزیرے JavaScript کو ایک جز میں شامل کرتے ہیں۔ کلائنٹ موڈ میں پہلی دستاویز نوڈ اور نیویگیشن میں پیش کی جاتی ہے پھر براؤزر میں ہوتی ہے۔
__nexy__/ پیدا ہونے والی ہر چیز کو رکھتا ہے: مرتب شدہ صفحات، کلائنٹ کا اندراج، تعمیراتی پیداوار۔ اس میں کبھی ترمیم نہ کریں، اس کا ارتکاب نہ کریں۔ صاف تعمیر پر مجبور کرنے کے لیے اسے حذف کریں۔
فرنٹ اینڈ انضمام
Vite کی جگہ نہیں لیتا Nexy Vite بنڈل اور کلائنٹ کوڈ پیش کرتا ہے۔ یہ کسی درخواست کو روٹ نہیں کرتا، ایک .nexy صفحہ پیش کرتا ہے، ایکشن چلاتا ہے یا اصل کا مالک نہیں ہوتا ہے۔ براؤزر ایک اصل سے بات کرتا ہے - Nexy's - اور ترقی میں Nexy proxies Vite کے اختتامی نقطہ اس کے ذریعے، اس لیے ترتیب دینے کے لیے کوئی CORS نہیں ہے۔
Nexy کی جگہ نہیں لیتا React. Nexy فیصلہ کرتا ہے کہ کون سا جزو رینڈر کرتا ہے، کب، اور کس پرپس کے ساتھ؛ فریم ورک جزو ماڈل، رد عمل اور ماحولیاتی نظام کا مالک ہے۔ ایک .nexy صفحہ جزیرے کے طور پر جز کو درآمد کرتا ہے۔ کلائنٹ موڈ میں ایک راستہ ایک جزو ہے۔
ایک جزو کے راستے کے لیے، Python صرف ایک پتلی ریپر ماڈیول لکھتا ہے جو فائل کی طرف اشارہ کرتا ہے۔ تالیف اور سرور سائیڈ رینڈرنگ Vite کا کام ہے۔
ترقی اور پیداوار
nx dev چیک کرتا ہے nexyconfig.py، صفحات کو مرتب کرتا ہے، شروع ہوتا ہے Vite جب پروجیکٹ کا فرنٹ اینڈ فریم ورک ہوتا ہے، اور جب آپ محفوظ کرتے ہیں تو سرور کو دوبارہ شروع کرتا ہے۔ nx build ایک ہی کام ایک بار کرتا ہے، وقت سے پہلے، اور nx start نتیجہ پیش کرتا ہے۔
nx dev |
nx build پھر nx start |
|
|---|---|---|
| صفحات | جب آپ محفوظ کرتے ہیں تو مرتب کیا جاتا ہے۔ | ایک بار مرتب کیا، وقت سے پہلے |
| کلائنٹ کوڈ | Vite ہاٹ ری لوڈ کے ساتھ دیو سرور، Nexy کی اپنی اصلیت کے پیچھے | __nexy__/client/ میں بنڈل، پہلے سے پیش کردہ HTML |
| Node.js | آگے چلتا ہے Python | خدمت کرنے کی ضرورت نہیں ہے |
| غلطیاں | براؤزر میں اوورلے، ہر صفحے پر ٹول بار | تفصیلات کے بغیر اسٹیٹس پیجز |
| اصل | ایک بندرگاہ، 3000 |
ایک بندرگاہ |
کیا تبدیل نہیں ہوتا: وہی روٹنگ کے اصول، وہی صفحہ فائلیں، وہی nexyconfig.py۔ ایک صفحہ جو دونوں کے درمیان مختلف طریقے سے برتاؤ کرتا ہے وہ ایک بگ ہے، موڈ نہیں۔
Nexy آپ کے لیے کیا چھوڑتا ہے۔
Nexy آپ کی درخواست کے کنارے پر رک جاتا ہے، جان بوجھ کر:
| تشویش | Nexy کیا فراہم کرتا ہے۔ | جو آپ لکھتے ہیں۔ |
|---|---|---|
| تصدیق | سیشن مڈل ویئر، AuthenticationMiddleware فعال ہونے پر |
لاگ ان، صارف کی تلاش، کوکی پالیسی |
| اجازت | dependencies.py، محافظ، فی فولڈر وراثت |
اصول خود |
| ڈیٹا بیس | اس کا اپنا کوئی ORM نہیں؛ nx new سکیفولڈ کر سکتے ہیں SQLModel، SQLAlchemy یا Tortoise، nx migrate رنز Alembic یا Aerich |
ماڈلز اور سوالات (ڈیٹا بیس) |
| بین الاقوامی کاری | آپ کے صفحات کے لیے کچھ نہیں؛ صرف CLI کا ترجمہ کیا جاتا ہے۔ | لائبریری اور پیغامات (i18n) |
| پس منظر کی نوکریاں | کچھ نہیں: کوئی قطار نہیں، کوئی شیڈولر نہیں۔ | ایک کارکن عمل |
| ای میل، ادائیگی، تلاش | کچھ نہیں | آپ کی منتخب کردہ خدمت |
تمام چھ کی وجہ ایک جیسی ہے: ایک فریم ورک جو آپ کے ORM یا آپ کی auth لائبریری کو چنتا ہے ان چیزوں کا فیصلہ صرف آپ کی درخواست ہی کر سکتی ہے۔ لاگت واضح ہے: آپ کے لیے کچھ بھی نہیں ہے، اور ٹیبل میں منسلک گائیڈز یہ بتاتے ہیں کہ ہر ایک کو کہاں سے لگانا ہے۔
اگلے اقدامات
- پروجیکٹ کا ڈھانچہ : جہاں ہر حصہ ایک پروجیکٹ میں رہتا ہے۔
- روٹنگ: فائل پر مبنی، ماڈیولر اور کسٹم راؤٹرز
- رینڈرنگ: SSR، ISR، CSR اور جزائر
- فرنٹ اینڈ : Vite، اسٹائلنگ اور کلائنٹ کی تعمیر