الوثائقالخطوات الأولى
ما هو نيكسي؟
Nexy هو إطار عمل Python لتطبيقات الويب الكاملة: صفحاتك وواجهة برمجة التطبيقات (API) الخاصة بك موجودة في مشروع واحد ويتم تقديمها بواسطة خادم واحد.
ما تحصل عليه
- الصفحات في Python. الملف
.nexyهو ملف HTML مع بضعة أسطر من Python في الأعلى؛ الملف.mdهو صفحة أيضًا. ليس هناك حاجة إلى JavaScript لعرض الصفحة.
- واجهة برمجة تطبيقات في نفس المشروع. ملف
.pyضمنsrc/routes/يجيب على طلبات HTTP: دالة اسمهاGETتجيبGET، وظيفة اسمهاPOSTتجيبPOST.
- واجهة برمجة تطبيقات في نفس المشروع. تجيب وحدة التحكم على طلبات HTTP: طريقتها
getتجيب علىGET، وطريقتهاpostتجيب علىPOST، والوحدة النمطية تجمع وحدات التحكم وخدماتها.
- واجهة برمجة تطبيقات في نفس المشروع. جهاز التوجيه FastAPI الذي لديك بالفعل يستمر في الإجابة، والصفحات وملفات التوجيه الخاصة بـ
src/routes/تجيب بجواره.
- وثائق واجهة برمجة التطبيقات (API) مجانًا. يظهر كل مسار واجهة برمجة التطبيقات (API) في مخطط OpenAPI، ويظهره Scalar كمرجع تفاعلي في
/docs. - النماذج التي تستدعي Python. يصل النموذج، أو المكالمة المكتوبة من المتصفح، إلى نفس الوظيفة Python.
- إطار عمل للواجهة الأمامية عندما تريد واحدًا. React، Vue، Svelte، Solid أو Preact، لمكون واحد أو للموقع بأكمله.
- أمر واحد للعمل، وواحد للشحن.
nx devيُعاد التحميل أثناء الحفظ؛nx buildيجهز الإنتاج.
ما بني عليه
يعتمد الإصدار الحالي، 2.2، على أدوات ربما تعرفها بالفعل:
| جزء | بنيت على | ماذا يعني بالنسبة لك |
|---|---|---|
| الخادم وواجهة برمجة التطبيقات | FastAPI | مسار واجهة برمجة التطبيقات (API) هو مسار FastAPI: يعمل التحقق من الصحة والتبعيات كالمعتاد Pydantic |
| مرجع واجهة برمجة التطبيقات | OpenAPI و العددية | المخطط موجود في /openapi.json، المرجع في /docs |
| الصفحات | Jinja2 | تستخدم صفحة .nexy علامات Jinja2 مثل {{ title }} |
| الواجهة الأمامية (اختياري) | Vite | فقط مع إطار عمل الواجهة الأمامية، والذي يحتاج أيضًا إلى Node.js |
الصفحة الأولى ونقطة النهاية الأولى
صفحة، في /hello:
title: prop[str] = "Hello"<h1>{{ title }}</h1>نقطة النهاية، عند GET /api/items، مدرجة في /docs بدون أي كود إضافي:
from nexy.http import Request async def GET(request: Request): return {"items": []}وجهة نظر، ومتحكمات تجيب /hello/ و GET /api/items/. يتم إدراج نقطة النهاية في /docs بدون أي رمز إضافي، ويعيد عنوان URL الذي لا يحتوي على الشرطة المائلة الأخيرة التوجيه إليها:
title: prop[str] = "Hello"<h1>{{ title }}</h1>from nexy.decorators import Controllerfrom nexy.hooks import useViews @Controller("/hello")class HelloController: async def get(self): return useViews("src/apps/hello_view.nexy", context={"title": "Hello"}) @Controller("/api/items")class ItemsController: async def get(self): return {"items": []}تسردها الوحدة الجذرية، ويقوم useRouter = AppModule في nexyconfig.py بتثبيتها:
from nexy.decorators import Module from .hello_controller import HelloController, ItemsController @Module()class AppModule: controllers = [HelloController, ItemsController]ما يتركه لك Nexy
قاعدة البيانات وتسجيل الدخول والقواعد المتعلقة بمن يمكنه فعل ما ينتمي إلى تطبيقك، لذلك تختار المكتبات. تُظهر قواعد البيانات والبرامج الوسيطة والأمان مكان توصيل كل منها.
الخطوات التالية
- التثبيت: تثبيت uv وإنشاء المشروع
- البداية السريعة: تشغيلها، تغيير الصفحة، إنشائها
- المفاهيم الأساسية: الكلمات القليلة التي تستخدمها بقية المستندات