ডকুমেন্টেশনওভারভিউ

অন্য কাঠামো থেকে আসছে

Nexy হল FastAPI প্লাস ফাইল-ভিত্তিক রাউটিং, সার্ভার-রেন্ডার করা পৃষ্ঠা এবং ঐচ্ছিক React, Vue, Svelte, Solid বা Preact দ্বীপ। এই পৃষ্ঠাটি ম্যাপ করে যা আপনি ইতিমধ্যেই জানেন।

নীচের প্রতিটি ফ্রেমওয়ার্কের নিজস্ব একটি পৃষ্ঠা রয়েছে, কাজ অনুসারে কাজ, আপনার জানা কোড এবং তারপরে Nexy কোড সহ:

থেকে FastAPI

FastAPI নেক্সি
@app.get("/users") আপনি আমদানি করেন এমন একটি মডিউলে GET ফাংশন src/routes/users.py এ
app.include_router(router) ফাইল পাথ হল URL; নিবন্ধন করার কিছু নেই
পথ পরম /users/{id} src/routes/users/[id].py
Depends(...) এখনও Depends(...): হ্যান্ডলাররা হল FastAPI হ্যান্ডলার
Jinja2 TemplateResponse শেষবিন্দুর পাশে একটি .nexy পৃষ্ঠা
সঙ্গে চালান uvicorn main:app nx dev, তারপর nx build && nx start

src/routes/*.py এর অধীনে সবকিছুই সাধারণ FastAPI: নির্ভরতা, Pydantic মডেল, মিডলওয়্যার এবং /docs কাজ করে।

একই শেষ বিন্দু, আগে এবং পরে:

main.py
from fastapi import FastAPI app = FastAPI()  @app.get("/users/{id}")async def get_user(id: int):    return {"id": id}
src/routes/users/[id].py
async def GET(id: int):    return {"id": id}
FastAPI নেক্সি
@app.get("/users") আপনার আমদানি করা একটি মডিউলে async def get(self) একটি @Controller("/users") ক্লাসে
app.include_router(router) একটি @Module এর controllers তালিকাভুক্ত নিয়ামক
পথ পরম /users/{id} @Controller("/users/{id}"), async def get(self, id: int) সহ
Depends(...) এখনও Depends(...): একটি নিয়ামক পদ্ধতি একটি FastAPI শেষ বিন্দু
Jinja2 TemplateResponse useViews("src/apps/....nexy"), পদ্ধতি দ্বারা ফিরে
সঙ্গে চালান uvicorn main:app nx dev, তারপর nx build && nx start

নির্ভরতা, Pydantic মডেল, মিডলওয়্যার এবং /docs কাজ করতে থাকে।

একই শেষ বিন্দু, আগে এবং পরে:

main.py
from fastapi import FastAPI app = FastAPI()  @app.get("/users/{id}")async def get_user(id: int):    return {"id": id}
src/apps/users/user_controller.py
from nexy.decorators import Controller  @Controller("/users/{id}")class UserController:    async def get(self, id: int):        return {"id": id}

থেকে Next.js

Next.js নেক্সি
app/page.tsx src/routes/index.tsx বা index.nexy
app/blog/[slug]/page.tsx src/routes/blog/[slug].tsx
app/layout.tsx (মালিক <html>) src/routes/layout.tsx useCSR = True (React), অথবা src/routes/layout.nexy সার্ভার মোডে
নেস্টেড layout.tsx ক্লায়েন্ট মোডে নেস্টেড layout.tsx / layout.vue / layout.svelte, সার্ভার মোডে নেস্টেড layout.nexy
use client একটি সার্ভার পৃষ্ঠায় উপাদান সার্ভার মোডে দ্বীপগুলি
রুট হ্যান্ডলার route.ts src/routes/api/x.py, লেখা Python
(group) ফোল্ডার একই: (group)/
সার্ভার অ্যাকশন @Action ফাংশনগুলি একটি ফর্ম থেকে বা টাইপ করা ক্লায়েন্ট ফাংশন হিসাবে ডাকা হয়
next dev / next build / next start nx dev / nx build / nx start

ব্যাকএন্ড হল Python, তাই আপনার API আপনার ডেটা এবং ML কাজের সাথে কোড শেয়ার করে। ক্লায়েন্ট উপাদানগুলি একটি সম্পূর্ণ-পৃষ্ঠা React গাছের পরিবর্তে দ্বীপ হিসাবে হাইড্রেট করে।

একটি Next.js পৃষ্ঠা প্রায় তার মতোই চলে যায় এবং এর "use client" উপাদানটি একটি সার্ভার পৃষ্ঠার একটি দ্বীপে পরিণত হয়:

src/routes/blog/[slug].tsx
import { useParams } from "@nexy/client"; export default function Post() {  const { slug } = useParams<{ slug: string }>();  return <h1>{slug}</h1>;}
src/routes/blog/[slug].nexy
---from "@/components/Comments.tsx" import Comments slug: prop[str]---<h1>{{ slug }}</h1><Comments post="{{ slug }}" directive="client:visible" />
Next.js নেক্সি
app/page.tsx একটি নিয়ামক যা useViews("src/apps/home_view.nexy") ফেরত দেয়
app/blog/[slug]/page.tsx @Controller("/blog/{slug}"), async def get(self, slug: str) সহ
app/layout.tsx (মালিক <html>) একটি লেআউট ভিউ কন্ট্রোলার তার ভিউকে ঘিরে রাখে, children
use client একটি সার্ভার পৃষ্ঠায় উপাদান একটি দৃশ্যে দ্বীপগুলি
রুট হ্যান্ডলার route.ts একটি কন্ট্রোলার যা একটি ডিক্ট ফেরত দেয়, Python এ লেখা
সার্ভার অ্যাকশন @Action ফাংশনগুলি একটি ফর্ম থেকে বা টাইপ করা ক্লায়েন্ট ফাংশন হিসাবে বলা হয়
next dev / next build / next start nx dev / nx build / nx start

ব্যাকএন্ড হল Python, তাই আপনার API আপনার ডেটা এবং ML কাজের সাথে কোড শেয়ার করে। ক্লায়েন্ট উপাদানগুলি একটি সম্পূর্ণ-পৃষ্ঠা React গাছের পরিবর্তে দ্বীপ হিসাবে হাইড্রেট করে।

একটি Next.js পৃষ্ঠা একটি নিয়ন্ত্রক হয়ে ওঠে এবং এটির দৃশ্য, এবং এর "use client" উপাদানটি দৃশ্যের একটি দ্বীপ:

src/apps/blog/post_controller.py
from nexy.decorators import Controllerfrom nexy.hooks import useViews  @Controller("/blog/{slug}")class PostController:    async def get(self, slug: str):        return useViews("src/apps/blog/post_view.nexy", context={"slug": slug})
src/apps/blog/post_view.nexy
---from "@/components/Comments.tsx" import Comments slug: prop[str]---<h1>{{ slug }}</h1><Comments post="{{ slug }}" directive="client:visible" />

এক্সপ্রেস বা নোড ব্যাকএন্ড থেকে

এক্সপ্রেস নেক্সি
app.get("/users/:id", handler) src/routes/users/[id].py সঙ্গে async def GET(id)
app.use(middleware) FastAPI মিডলওয়্যার, nexyconfig.py থেকে নিবন্ধিত
res.json(obj) একটি dict বা একটি Pydantic মডেল ফেরত দিন
ইজেএস/পগ ভিউ .nexy (Jinja2) পৃষ্ঠা
npm run dev nx dev

app.use(...) nexyconfig.py এর একটি ক্ষেত্র হয়ে যায়, এবং res.json(...) একটি রিটার্ন মান হয়ে যায়:

nexyconfig.py
from nexy.core.models import NexyConfigModel  class NexyConfig(NexyConfigModel):    useCORS = {"allow_origins": ["https://example.com"]}    useGZip = {"minimum_size": 1000}
src/routes/users/[id].py
async def GET(id: int):    return {"id": id, "name": "Ada"}  # res.json({ id, name })
এক্সপ্রেস নেক্সি
app.get("/users/:id", handler) @Controller("/users/{id}"), async def get(self, id: int) সহ
app.use(middleware) FastAPI মিডলওয়্যার, nexyconfig.py থেকে নিবন্ধিত
res.json(obj) একটি dict বা একটি Pydantic মডেল ফেরত দিন
ইজেএস/পগ ভিউ .nexy (Jinja2) ভিউ, useViews দ্বারা প্রত্যাবর্তিত
npm run dev nx dev

app.use(...) nexyconfig.py এর একটি ক্ষেত্র হয়ে যায়, এবং res.json(...) একটি রিটার্ন মান হয়ে যায়:

nexyconfig.py
from nexy.core.models import NexyConfigModel  class NexyConfig(NexyConfigModel):    useCORS = {"allow_origins": ["https://example.com"]}    useGZip = {"minimum_size": 1000}
src/apps/users/user_controller.py
from nexy.decorators import Controller  @Controller("/users/{id}")class UserController:    async def get(self, id: int):        return {"id": id, "name": "Ada"}  # res.json({ id, name })

একটি রাউটার নির্বাচন করা হচ্ছে

ব্যবহার করুন কখন
ফাইল-ভিত্তিক রাউটার ফাইল থেকে ম্যাপ করা পৃষ্ঠা এবং শেষ পয়েন্ট; ডিফল্ট
মডুলার রাউটার কন্ট্রোলার, মডিউল এবং নির্ভরতা ইনজেকশন, নেস্টজেএস-স্টাইল

দুটি ফাইলে মডুলার রাউটার: একটি কন্ট্রোলার, এবং মডিউল nexyconfig.py পয়েন্টে useRouter = AppModule:

src/apps/app_controller.py
from nexy.decorators import Controller  @Controller()class AppController:    async def get(self):        return {"message": "Hello"}
src/apps/app_module.py
from nexy.decorators import Modulefrom .app_controller import AppController  @Module()class AppModule:    controllers = [AppController]

উভয়ই nx new দ্বারা ভারা এবং একই শেষ থেকে শেষ পরীক্ষা দ্বারা আচ্ছাদিত। রাউটিং এবং মডুলার রাউটিং দেখুন।

যেখানে পরের

GitHub-এ সম্পাদনা করুন

Enter ফলাফল খোলে, Esc বন্ধ করে।