दस्तावेज़ढाँचे में अंतर
React
नेक्सी सर्वर पर React 19 घटकों को प्रस्तुत करता है, फिर React उन्हें ब्राउज़र में हाइड्रेट करता है। पेज, लेआउट, द्वीप और क्रियाएं हर ढांचे में समान हैं: यह पेज सेटअप को कवर करता है, फिर वे हिस्से जो साझा अनुबंध से भिन्न होते हैं।
| मोड | nexyconfig.py |
पन्ने हैं | React है |
|---|---|---|---|
| सर्वर (डिफ़ॉल्ट) | useCSR = False |
.nexy फ़ाइलें |
उन पन्नों के अंदर द्वीप |
| ग्राहक | useCSR = True |
.tsx फ़ाइलें |
संपूर्ण पृष्ठ, लेआउट और एक क्लाइंट राउटर के साथ |
मॉड्यूलर राउटर के साथ, React घटक .nexy दृश्यों के अंदर द्वीप होते हैं, एक नियंत्रक रिटर्न देता है: कोई पेज फ़ाइल नहीं है और कोई क्लाइंट राउटर नहीं है।
एक प्रोजेक्ट प्रारंभ करें
nx new my-app --template web-fbr-react
nx new my-app --template web-modular-react
टेम्प्लेट React द्वीपों वाला एक सर्वर-मोड प्रोजेक्ट है। इसके बजाय संकेतों का उत्तर देने के लिए टेम्पलेट के बिना nx new my-app चलाएं: राउटर, प्रोजेक्ट प्रकार, क्लाइंट-साइड रूटिंग का उपयोग करना है या नहीं, फिर फ्रेमवर्क।
किसी मौजूदा प्रोजेक्ट में React सक्षम करें
from nexy.core.models import NexyConfigModelfrom nexy.frontend import react class NexyConfig(NexyConfigModel): useFF = react() useAliases = {"@": "src"}import { defineConfig } from "vite";import react from "@vitejs/plugin-react";import nexy from "./__nexy__/vite"; export default defineConfig({ plugins: [nexy(), react()], customLogger: nexy.log(),});nx new यह फ़ाइल लिखता है; नेक्सी स्वयं __nexy__/vite.ts लिखता है, इसलिए इसे संपादित न करें।
| पैकेज | संस्करण nx new लिखता है |
|---|---|
react, react-dom |
^19.2.5 |
@vitejs/plugin-react |
^5.2.0 |
@types/react, @types/react-dom |
देव निर्भरताएँ |
नियम
- प्रति प्रोजेक्ट एक ढाँचा।
useFFबिल्कुल एक ढाँचा लेता है;useFF = [react(), vue()]स्टार्टअप पर सर्वर को रोक देता है।
- पृष्ठ
.tsxहैं। React घटकों के लिए.tsxऔर.jsxका स्वामी है, लेकिनsrc/routes/के अंतर्गत केवल.tsxफ़ाइल एक पृष्ठ बन जाती है। - घटक
src/routes/के बाहर रहते हैं, आमतौर परsrc/components/में, इसलिए वे पृष्ठ नहीं हैं। - सर्वर-मोड प्रोजेक्ट में कोई
.tsxपेज नहीं है, और क्लाइंट-मोड प्रोजेक्ट में कोई.nexyपेज नहीं है: नेक्सी शुरू करने से इंकार कर देता है और फ़ाइल को नाम देता है। मोड देखें।
- घटक
src/components/में रहते हैं, और एक दृश्य उन्हें द्वीपों के रूप में आयात करता है।
पन्ने
क्लाइंट मोड (useCSR = True) में, एक पेज एक .tsx फ़ाइल है।
पृष्ठ घटक
पृष्ठ फ़ाइल का डिफ़ॉल्ट निर्यात है. यदि कोई डिफ़ॉल्ट निर्यात मौजूद नहीं है, तो नेक्सी पहला नामित निर्यात चुनता है।
export default function Home() { return <h1>Hello</h1>;}गतिशील खंड
यूआरएल पैरामीटर useParams हुक के माध्यम से उपलब्ध हैं:
import { useParams } from "@nexy/client"; export default function Post() { const { slug } = useParams<{ slug: string }>(); return <h1>{slug}</h1>;}लेआउट
क्रियान्वयन
रूट लेआउट दस्तावेज़ शेल को परिभाषित करता है। नेस्टेड लेआउट अपने नीचे की सामग्री को लपेटते हैं।
import type { ReactNode } from "react"; export default function RootLayout({ children }: { children: ReactNode }) { return ( <html> <body>{children}</body> </html> );}द्वीप
सर्वर मोड में, एक React घटक को एक में आयात किया जाता है .nexy फ़ाइल एक द्वीप है।
आयात करना
.nexy फ़ाइल के फ्रंटमैटर में घटकों को आयात करें:
from "@/components/Counter.tsx" import Counter<Counter start=3 />from "@/components/Counter.tsx" import Counter<Counter start=3 />जलयोजन निर्देश
द्वीप के हाइड्रेट होने को नियंत्रित करने के लिए directive प्रोप का उपयोग करें:
client:load(डिफ़ॉल्ट): तुरंतclient:idle: जब ब्राउज़र निष्क्रिय होclient:visible: जब यह दृश्य में स्क्रॉल करता हैclient:media: जब मीडिया क्वेरी मेल खाती है
क्रियाएँ और नेविगेशन
कॉलिंग क्रियाएं
किसी एक्शन कॉल की स्थिति को प्रबंधित करने के लिए useAction हुक का उपयोग करें:
import { useAction } from "@nexy/client";import { add_todo } from "@nexy/actions"; const { run, pending, error, data } = useAction(add_todo);// ...<button onClick={() => run({ title: "New Task" })}>Add</button>
नेविगेशन
क्लाइंट-साइड ट्रांज़िशन के लिए Link घटक का उपयोग करें:
import { Link } from "@nexy/client"; <Link href="/about">About</Link>
प्रोग्रामेटिक नेविगेशन के लिए, useRouter हुक का उपयोग करें:
import { useRouter } from "@nexy/client"; const router = useRouter();router.push("/dashboard");
यूआरएल पहुंच
usePathname(): वर्तमान पथuseParams(): गतिशील खंडuseSearchParams(): क्वेरी स्ट्रिंगuseLocation(): पूर्ण स्थान वस्तु