दस्तावेज़फ़ाइल-आधारित
लिंक करना और नेविगेट करना
क्लाइंट रूटिंग (useCSR = True) के साथ, दो पेजों के बीच एक लिंक दस्तावेज़ को पुनः लोड करने के बजाय ब्राउज़र में पेज को स्वैप करता है। लेआउट अपनी स्थिति बनाए रखते हैं.
सादे लिंक पहले से ही काम करते हैं
आपके प्रोजेक्ट के प्रत्येक पृष्ठ पर <a href> क्लाइंट पर नेविगेट करता है, बिना किसी घटक और मार्कर के:
<a href="/about">About</a>
ब्राउज़र पर एक लिंक छोड़ा जाता है, और पृष्ठ सामान्य रूप से लोड होता है, जब:
- एक संशोधक कुंजी रखी हुई है, या बटन मुख्य नहीं है;
- इसमें
target(_selfके अलावा),download,rel="external"याdata-nexy-reloadहै; hrefएक अन्य मूल है, एकmailto:याtel:लिंक, या केवल एक#fragment;- पथ किसी भी क्लाइंट रूट से मेल नहीं खाता है, इसलिए सर्वर इसका उत्तर देता है।
Link
Link वही एंकर है जो एक साधारण व्यक्ति नहीं कर सकता: इसका href आपके मार्गों के विरुद्ध जांचा जाता है, यह लक्ष्य पृष्ठ को गर्म करता है, और यह जानता है कि यह वर्तमान पृष्ठ पर कब इंगित करता है। जब आप nx dev या nx build चलाते हैं तो नेक्सी आपके फ्रेमवर्क का Link __nexy__/src में उत्पन्न करता है।
| फ़्रेमवर्क | आयात |
|---|---|
| React, Preact, Solid, Vue | import { Link } from "@nexy/client" |
| Svelte | import Link from "@nexy/Link.svelte" |
import { Link } from "@nexy/client"; export default function Nav() { return ( <Link href="/dashboard" activeClassName="on"> Dashboard </Link> );}
| प्रोप | मतलब |
|---|---|
href |
प्रोजेक्ट का एक रूट (टाइपो एक प्रकार की त्रुटि है), वैकल्पिक रूप से ?query या #fragment, या एक बाहरी यूआरएल के साथ। |
replace |
इतिहास प्रविष्टि को जोड़ने के बजाय बदलें। |
scroll |
false नेविगेट करने के बाद स्क्रॉल स्थिति बनाए रखता है। डिफ़ॉल्ट: true। |
prefetch |
'intent' (डिफ़ॉल्ट) पृष्ठ को होवर, फ़ोकस या स्पर्श पर लोड करता है; 'viewport' जब लिंक स्क्रॉल होकर दृश्य में आता है; false कभी नहीं। |
activeClassName |
जब लिंक वर्तमान पृष्ठ या उसके नीचे एक पृष्ठ (activeClass में Vue और Svelte) पर इंगित करता है तो कक्षा में जोड़ा जाता है। |
exact |
केवल सटीक पृष्ठ पर सक्रिय। |
वर्तमान पृष्ठ पर इंगित करने वाला लिंक aria-current="page" भी मिलता है।
हुक
स्थान हर ढाँचे में, उस ढाँचे के मुहावरे में उपलब्ध है। पहले के दौरान, सर्वर-साइड अनुरोध के यूआरएल के साथ हुक उत्तर प्रस्तुत करता है, ताकि पेज बिना किसी बेमेल के हाइड्रेट हो जाए।
| React, Preact | Solid | Vue | Svelte | |
|---|---|---|---|---|
| पथ | usePathname() |
usePathname() एक एक्सेसर लौटाता है |
usePathname() एक रेफरी लौटाता है |
$pathname स्टोर |
| रूट पैरामीटर्स | useParams() |
useParams() एक्सेसर |
useParams() रेफरी |
$params स्टोर |
| क्वेरी | useSearchParams() |
useSearchParams() एक्सेसर |
useSearchParams() रेफरी |
$searchParams स्टोर |
| सब कुछ | useLocation() |
useLocation() एक्सेसर |
useLocation() रेफरी |
$location स्टोर |
| नेविगेट करें | useRouter() |
useRouter() |
useRouter() |
router |
क्वेरी एक URLSearchParams है। useRouter() और router दें push(href), replace(href), back(), forward(), refresh() और prefetch(href); push और replace { scroll: false } स्वीकार करते हैं।
import { useParams, useRouter, useSearchParams } from "@nexy/client"; export default function User() { const { id } = useParams<{ id: string }>(); const tab = useSearchParams().get("tab") ?? "profile"; const router = useRouter(); return <button onClick={() => router.push(`/users/${id}?tab=posts`)}>{tab}</button>;}
Image
Image एक <img> प्रस्तुत करता है जो डिफ़ॉल्ट रूप से आलसी है और इसका आकार ज्ञात होने पर लेआउट को स्थानांतरित नहीं करता है।
| फ़्रेमवर्क | आयात |
|---|---|
| React, Preact, Solid, Vue | import { Image } from "@nexy/client" |
| Svelte | import Image from "@nexy/Image.svelte" |
<Image src="/photo.jpg" alt="A mountain" width={800} height={600} />
altआवश्यक है; सजावटी छवि के लिएalt=""का उपयोग करें। इसके गायब होने पर नेक्सी एक बार चेतावनी देती है।widthऔरheightदोनों के साथ, विशेषताएँ ब्राउज़र को पहलू अनुपात देती हैं और छवि तरल बनी रहती है (height: auto; max-width: 100%)।priorityछवि को अब उच्च प्राथमिकता पर लोड करता है, जो आगमन पर दिखाई देती है।fillwidthऔरheightको नजरअंदाज करते हुए, छवि को उसके स्थित मूल को कवर कर देता है।sizesऔरsrcSetगुजरते हैं। नेक्सी छवियों का आकार बदलता या परिवर्तित नहीं करता है।
.nexy पेज से लिंक
from nexy import Link{{ Link("/about", "About", class_name="nav-link") }}
Link(href, children="", class_name=None, prefetch=True, **attrs) <a href="/about" data-nexy-link="true"> प्रस्तुत करता है। प्रत्येक विशेषता और href HTML से बच गए हैं।
राउटर क्या करता है
नेविगेशन पर, राउटर:
- क्लाइंट मार्गों के विरुद्ध पथ से मेल खाता है (
.tsx,.jsx,.vue,.svelte); - पृष्ठ और उसके लेआउट्स पहले को आयात और प्रस्तुत करता है, और उसके बाद ही यूआरएल को
history.pushStateके साथ ले जाता है, इसलिए पता बार कभी भी विफल पृष्ठ नहीं दिखाता है; nexy:navigatedइवेंट कोdocumentपर भेजता है;- शीर्ष पर, या
#fragmentलक्ष्य तक स्क्रॉल करता है।
एक नया नेविगेशन पुराने नेविगेशन को रद्द कर देता है जो अभी भी प्रस्तुत हो रहा है। यदि कोई पृष्ठ प्रस्तुत नहीं हो पाता है, तो ब्राउज़र इसके बदले सर्वर से इसके लिए पूछता है। पीछे और आगे के बटन उस प्रविष्टि के पृष्ठ को प्रस्तुत करते हैं और उसकी स्क्रॉल स्थिति को पुनर्स्थापित करते हैं।
document.addEventListener("nexy:navigated", (event) => { console.log(event.detail.pathname, event.detail.params);});
राउटर केवल क्लाइंट रूट वाले प्रोजेक्ट में शुरू होता है, इसलिए सर्वर-रेंडर प्रोजेक्ट ब्राउज़र का अपना बैक बटन और स्क्रॉल रिस्टोरेशन रखता है।