ডকুমেন্টেশনওভারভিউ
অন্য কাঠামো থেকে আসছে
Nexy হল FastAPI প্লাস ফাইল-ভিত্তিক রাউটিং, সার্ভার-রেন্ডার করা পৃষ্ঠা এবং ঐচ্ছিক React, Vue, Svelte, Solid বা Preact দ্বীপ। এই পৃষ্ঠাটি ম্যাপ করে যা আপনি ইতিমধ্যেই জানেন।
নীচের প্রতিটি ফ্রেমওয়ার্কের নিজস্ব একটি পৃষ্ঠা রয়েছে, কাজ অনুসারে কাজ, আপনার জানা কোড এবং তারপরে Nexy কোড সহ:
| Python | ব্যাকএন্ড | ফুলস্ট্যাক JavaScript |
|---|---|---|
| FastAPI | এক্সপ্রেস, ফাস্টফাই | Next.js, Remix |
| Flask | এলিসিয়া, হনো | Nuxt |
| Django | NestJS, স্প্রিং বুট | SvelteKit |
| লারাভেল , রুবি অন রেল | Astro |
থেকে 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 কাজ করে।
একই শেষ বিন্দু, আগে এবং পরে:
from fastapi import FastAPI app = FastAPI() @app.get("/users/{id}")async def get_user(id: int): return {"id": id}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 কাজ করতে থাকে।
একই শেষ বিন্দু, আগে এবং পরে:
from fastapi import FastAPI app = FastAPI() @app.get("/users/{id}")async def get_user(id: int): return {"id": id}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" উপাদানটি একটি সার্ভার পৃষ্ঠার একটি দ্বীপে পরিণত হয়:
import { useParams } from "@nexy/client"; export default function Post() { const { slug } = useParams<{ slug: string }>(); return <h1>{slug}</h1>;}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" উপাদানটি দৃশ্যের একটি দ্বীপ:
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})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(...) একটি রিটার্ন মান হয়ে যায়:
from nexy.core.models import NexyConfigModel class NexyConfig(NexyConfigModel): useCORS = {"allow_origins": ["https://example.com"]} useGZip = {"minimum_size": 1000}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(...) একটি রিটার্ন মান হয়ে যায়:
from nexy.core.models import NexyConfigModel class NexyConfig(NexyConfigModel): useCORS = {"allow_origins": ["https://example.com"]} useGZip = {"minimum_size": 1000}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:
from nexy.decorators import Controller @Controller()class AppController: async def get(self): return {"message": "Hello"}from nexy.decorators import Modulefrom .app_controller import AppController @Module()class AppModule: controllers = [AppController]উভয়ই nx new দ্বারা ভারা এবং একই শেষ থেকে শেষ পরীক্ষা দ্বারা আচ্ছাদিত। রাউটিং এবং মডুলার রাউটিং দেখুন।
যেখানে পরের
- দ্রুত শুরু : একটি প্রকল্প তৈরি করুন এবং এটি চালান
- প্রজেক্ট স্ট্রাকচার: যেখানে প্রতিটি ফাইল থাকে
- রাউটিং : রাউটার নির্বাচন করুন