दस्तावेज़मोड

प्रतिपादन

प्रतिपादन एक प्रश्न का उत्तर देता है: एचटीएमएल कौन बनाता है, और कब। नेक्सी के चार उत्तर हैं और एक डिफ़ॉल्ट है।

निश्चित नहीं? एसएसआर रखें। कोई पृष्ठ तभी बदलें जब आप कारण बता सकें: सामग्री जो शायद ही कभी बदलती है (आईएसआर), एक विजेट जिसके लिए ब्राउज़र की आवश्यकता होती है (द्वीप), या ऐप-जैसे नेविगेशन (सीएसआर)।

यह कैसे काम करता है

HTML का निर्माण कौन करता है, और कब करता है
SSRrequestserver rendersHTMLbrowser
ISRrequestcached HTML?browser, regenerated in the background
CSRrequestdocument rendered by the serverbrowser takes over navigation
Islandsrequestserver renders the pageone widget hydrates on demand

चार मोड

एसएसआर आईएसआर सीएसआर द्वीप
डेटा पढ़ा जाता है हर अनुरोध पर प्रत्येक पुनर्जनन पर ब्राउज़र में हर अनुरोध पर
HTML से आता है सर्वर सर्वर, फिर कैश पहले दस्तावेज़ के लिए सर्वर, उसके बाद ब्राउज़र सर्वर
JavaScript केवल द्वीपों के लिए केवल द्वीपों के लिए फ्रेमवर्क बंडल केवल द्वीप
जलयोजन कोई नहीं कोई नहीं संपूर्ण दस्तावेज़ द्वीप
कैश कोई नहीं प्रति यूआरएल, स्मृति में कोई नहीं कोई नहीं
द्वारा निर्णय लिया गया डिफ़ॉल्ट revalidate = N पृष्ठ में useCSR = True परियोजना में directive घटक पर
अनाज पेज पेज परियोजना घटक

जीवनचक्र का प्रतिपादन

दो तथ्य सबसे अधिक आश्चर्य की व्याख्या करते हैं।

  1. एक प्रोजेक्ट एक मोड में है। useCSR सर्वर मोड (एसएसआर, आईएसआर, द्वीप, .nexy, .md, .mdx रूट) और क्लाइंट मोड (फ्रेमवर्क रूट और एक क्लाइंट राउटर) के बीच चयन करता है। दोनों को मिश्रित नहीं किया जा सकता: सर्वर मोड और क्लाइंट मोड देखें।
  2. सर्वर मोड के अंदर, मोड प्रति पृष्ठ है। एक पृष्ठ को revalidate के साथ कैश किया जा सकता है, दूसरा एक द्वीप को पकड़ सकता है, तीसरा कुछ भी नहीं कर सकता है।

क्लाइंट मोड अभी भी एक वास्तविक दस्तावेज़ भेजता है: नेक्सी इसे पहली प्रतिक्रिया के लिए नोड में प्रस्तुत करता है, फिर ब्राउज़र नेविगेशन का कार्यभार संभाल लेता है। सीएसआर पृष्ठ किसी बंडल की प्रतीक्षा करने वाला कोई खाली पृष्ठ नहीं है।

कब उपयोग करें

  • सामग्री, विपणन, दस्तावेज़ीकरण: एसएसआर, प्लस आईएसआर जब सामग्री शायद ही कभी बदलती है।
  • एक इंटरैक्टिव विजेट के साथ एक अधिकतर स्थिर पृष्ठ: एक द्वीप के साथ एसएसआर।
  • डैशबोर्ड, संपादक, ऐप जैसा नेविगेशन: सीएसआर।
  • एक पृष्ठ लगातार पढ़ा जाता है और शायद ही कभी बदला जाता है: आईएसआर।

विन्यास

मोड कहाँ
एसएसआर कहीं नहीं: यह डिफ़ॉल्ट है
आईएसआर revalidate = 60 एक .nexy पेज के फ्रंटमैटर में
सीएसआर useCSR = True में nexyconfig.py, useFF सेट के साथ
द्वीप directive="client:visible" घटक टैग पर

उदाहरण

src/routes/blog/index.nexy
---revalidate = 60---<h1>Rendered at most once per minute</h1>

फ्रंटमैटर लाइन के बिना वही पेज SSR है।

src/apps/sales_view.nexy
---from "@/components/Chart.tsx" import Chart---<h1>Rendered on every request</h1><Chart directive="client:visible" />

दृश्य एसएसआर है, और चार्ट एक द्वीप है जो दृश्य में स्क्रॉल करने पर हाइड्रेट होता है।

सीमाएँ

  • कोई एसएसजी मोड नहीं है। नेक्सी बिल्ड समय (घटक HTML, क्लाइंट दस्तावेज़) पर HTML को प्रीरेंडर करता है, लेकिन हमेशा इसे सर्वर के माध्यम से वापस पढ़ता है: कोई निर्यात कमांड नहीं, स्थिर रूप से होस्ट करने के लिए कोई स्टैंडअलोन फ़ोल्डर नहीं। जमे हुए सामग्री के लिए, लंबी विंडो वाले ISR का उपयोग करें।
  • आईएसआर एक सीडीएन नहीं है। कैश उस प्रक्रिया में रहता है जो पेज को प्रस्तुत करता है; कई कर्मचारी कई कैश रखते हैं। आईएसआर देखें।
  • सीएसआर एक परियोजना निर्णय है। आप एक पृष्ठ सीएसआर नहीं बना सकते हैं और शेष एसएसआर नहीं रख सकते हैं।
  • द्वीप द्वीप को हाइड्रेट करते हैं, पेज को नहीं। एक पेज जिसके सभी द्वीप एक-दूसरे पर निर्भर हैं, वह छद्म रूप से एक सीएसआर पेज है।

अगले चरण

GitHub पर संपादित करें

Enter परिणाम खोलता है, Esc बंद करता है।