الوثائقالخطوات الأولى

ما هو نيكسي؟

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:

src/routes/hello.nexy
---title: prop[str] = "Hello"---<h1>{{ title }}</h1>

نقطة النهاية، عند GET /api/items، مدرجة في /docs بدون أي كود إضافي:

src/routes/api/items.py
from nexy.http import Request  async def GET(request: Request):    return {"items": []}

وجهة نظر، ومتحكمات تجيب /hello/ و GET /api/items/. يتم إدراج نقطة النهاية في /docs بدون أي رمز إضافي، ويعيد عنوان URL الذي لا يحتوي على الشرطة المائلة الأخيرة التوجيه إليها:

src/apps/hello_view.nexy
---title: prop[str] = "Hello"---<h1>{{ title }}</h1>
src/apps/hello_controller.py
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 بتثبيتها:

src/apps/app_module.py
from nexy.decorators import Module from .hello_controller import HelloController, ItemsController  @Module()class AppModule:    controllers = [HelloController, ItemsController]

ما يتركه لك Nexy

قاعدة البيانات وتسجيل الدخول والقواعد المتعلقة بمن يمكنه فعل ما ينتمي إلى تطبيقك، لذلك تختار المكتبات. تُظهر قواعد البيانات والبرامج الوسيطة والأمان مكان توصيل كل منها.

الخطوات التالية

حرِّر على GitHub

Enter يفتح النتيجة، وEsc يغلق.