DanLevy.net

अपने ब्लॉग को अपग्रेड करते समय सीखे गए सबक

एस्ट्रो, टेलविंड, एमडीएक्स, पेजफाइंड, और अधिक!

हाल ही में, मैंने अपने 8+ साल पुराने Gatsby v1 साइट को अपग्रेड करने की यात्रा शुरू की।

इस ब्लॉग पोस्ट में मैं इस प्रक्रिया के दौरान सीखे गए कुछ अनुभव और अन्वेषित रोचक तकनीकों के बारे में साझा करूंगा।

सामग्री सूची

परियोजना आवश्यकताएँ

अपग्रेड करने से पहले, मैंने आवश्यकताओं का एक सेट स्थापित किया:

परियोजना आवश्यकताएँ (जारी)

चूँकि मेरे ब्लॉग पर दैनिक पेज व्यू की संख्या बेहद अस्थायी है, मुझे लगा कि एक स्थिर पूर्व-उत्पन्न साइट मुझे अतिरिक्त जटिलता के बिना वह प्रदर्शन देगी जिसकी मुझे आवश्यकता है।

इसके अलावा, मुझे इस साइट की वर्तमान सामग्री और विशेषताओं को बनाए रखने की आवश्यकता है, जिसमें शामिल हैं:

अपनी सही तकनीकी स्टैक का चयन करना

वर्षों तक मैंने कई स्थिर साइट उपकरणों के साथ काम किया है, जैसे Jekyll, Hugo, Slate और Gatsby। यहाँ तक कि कई फ्रंट-एंड फ्रेमवर्क: Ember, Knockout, Angular, Vue और बेशक React।

इसलिए, मैंने बिल्कुल भी अधिक विकल्प हासिल कर लिए हैं, जिन्हें अंततः मैंने Remix, Next.js और Astro तक सीमित कर दिया,

मैंने अपनी मूल्यांकन प्रक्रिया पर एक पूरा ब्लॉग श्रृंखला लिख सकता हूँ, लेकि:न यहाँ इसका सारांश दे रहा हूँ:

मैंने एस्ट्रो का चयन किया क्योंकि मैंने जल्दी से महत्वपूर्ण काम करने की क्षमता पाई।

उनकी API डिज़ाइन बहुत सरल और आकर्षक है। यह फ्लेक्सिबिलिटी और अच्छे डिज़ाइन विचारों के बीच एक शानदार संतुलन है।

यह थोड़ा आश्वस्त करता है कि एस्ट्रो में कोई तारीख बायस या फ्रेमवर्क एजेंडा नहीं है।

एस्ट्रो एकमात्र तकनीक नहीं थी जिसका मैंने उपयोग किया, यहाँ स्टैक का पूरा विवरण है:

एस्ट्रो: सीखने की बाधा और मुख्य विशेषताएं

एस्ट्रो जल्दी से मेरे अपग्रेड का आधार बिंदु बन गया।

यहां कुछ मुख्य विशेषताएं हैं जिन्हें मैंने विशेष रूप से उपयोगी पाया:

कुछ चीजें थोड़ा अजीब लगीं, जैसे एस्ट्रो के इंजेक्टेड मार्कअप के आसपास स्टाइलिंग और display:contents का प्रभाव।

<style>astro-island,astro-slot,astro-static-slot{display:contents}</style>

.astro की तुलना क्लाइंट कॉम्पोनेंट्स से

एस्ट्रो कॉम्पोनेंट्स आधारभूत रूप से एक शक्तिशाली कॉम्पोनेंट और प्रॉप्स पैटर्न के साथ HTML टेम्पलेट हैं। वे बिल्ड-टाइम पर डेटा फेट्च कर सकते हैं, बैकएंड संसाधनों तक पहुंच सकते हैं और कुछ संवेदनशील जानकारी को छिपा सकते हैं।

एस्ट्रो के .astro कॉम्पोनेंट्स को समझने का सबसे अच्छा तरीका उन्हें क्लाइंट-साइड कॉम्पोनेंट्स (रिएक्ट, व्यू, स्वेलेट आदि) के साथ तुलना करना है।

आपको क्या करने की आवश्यकता है?.astro कॉम्पोनेंटक्लाइंट कॉम्पोनेंट
शक्तिशाली टेम्पलेट+कॉम्पोनेंट पैटर्न के साथ HTML उत्पन्न करें
बिल्ड-टाइम पर डेटा फेट्च करें
बैकएंड संसाधनों (सीधे) तक पहुंच लें
संवेदनशील जानकारी (एक्सेस टोकन, API कुंजियां आदि) को छिपाए रखें
क्लाइंट-साइड जावास्क्रिप्ट को कम करें
क्लाइंट कॉम्पोनेंट्स (रिएक्ट, व्यू, स्वेलेट आदि) का उपयोग करें
इंटरैक्टिविटी और ईवेंट लिसनर्स (onClick(), onChange() आदि) को जोड़ें
स्टेट और लाइफसाइकल इफेक्ट्स (useState(), useReducer(), useEffect() आदि) का उपयोग करें
ब्राउज़र-केवल API का उपयोग करें
स्टेट, इफेक्ट्स या ब्राउज़र-केवल API पर निर्भर करने वाले कस्टम हुक्स का उपयोग करें

आधुनिक CSS: वाह!

फ्रंटएंड विकास में वापस आकर, मैंने प्राकृतिक CSS में उन्नतियों से खुशी महसूर की:

खोज: Pagefind

किसी भी तीसरे पक्ष की सेवा या डेटाबेस होस्टिंग के बिना साइट खोज को लागू करना एक मज़ेदार चुनौती लग रहा था। वैसे तो मेरे पास 10,000 पोस्ट इंडेक्स करने के लिए नहीं हैं (अभी तक।)

Astro के समुदाय एकीकरणों की ब्राउज़ करते समय मुझे एक शानदार उपकरण मिला, जिसके बारे में मैंने पहले जल्दी से जानना चाहा होता: Pagefind

कम उपकरणों में से कोई भी लोकल साइट खोज की समस्या को जितनी अच्छी तरह Pagefind हल करता है, उतना कोई नहीं है।

Pagefind के लागू करने की सरलता एक आनंद है। यह किसी भी स्थैतिक साइट कंटेंट के साथ एकीकृत किया जा सकता है, और आप चुन सकते हैं कि आपको डिफ़ॉल्ट UI चाहिए या आप अगर चाहें तो कुछ भी विशिष्ट बना सकते हैं।

यह सभी चीज़ों को जिन्हें मैं चाहता था, स्वच्छ रूप से हल कर दिया। इसके एकीकरण में केवल कुछ मिनट लगे, और अधिकांश काम <div id="search"></div> टैग जोड़ने और कुछ शैली जोड़ने में लगा!

टिप्पणियाँ: Utterances

दुर्भाग्य से, मुझे Disqus और मेरी बहुत सालों के टिप्पणियों को अलविदा कहना पड़ा।
मुझे अपनी साइट पर तीसरे पक्ष के स्क्रिप्टों पर बेहतर नियंत्रण/दृश्यता चाहिए थी।
इसके अलावा, यह सरल और रखरखाव योग्य होना चाहिए।

इसने मुझे Utterances सेवा का चयन करने के लिए प्रेरित किया। इसकी गिटहब (मुद्दों पर आधारित) टिप्पणियों की प्रणाली मेरे पाठकों के साथ अच्छी तरह से मेल खाती है। इसके अलावा, इसकी स्थापना आसान है और यह निःशुल्क है।

टेलविंड: पछतावा

एकमात्र तकनीक है जिसके उपयोग से मैं अब बढ़ते पछतावे का अनुभव कर रहा हूँ: टेलविंड।

समय के साथ, मैं लिखने की लागत के विपरीत रखरखाव की लागत में अंतर महसूस कर रहा हूँ। टेलविंड लिखने में इतना तेज है, हालाँकि जब यह पर्याप्त जटिल हो जाता है, तो इसे पढ़ना और विस्तारित करना ठीठी हो सकता है।

निष्कर्ष

अपने पुराने गैस्बी v1 साइट को एस्ट्रो के आधार पर एक आधुनिक स्टैक में अपग्रेड करना मेरे लिए एक मजेदार अनुभव रहा। 10/10 के साथ अनुशंसा करूंगा।

यदि आप अपने पुराने साइट को अपग्रेड करने या एक नए स्टैटिक (या हाइब्रिड) साइट को बनाने की ओर ध्यान दे रहे हैं, तो एस्ट्रो की ओर ध्यान देने की बहुत अधिक अनुशंसा करता हूँ। शिक्षण वक्र कभी-कभी खड़ा हो सकता है, लेकिन कार्यक्षमता, विकासकर्ता अनुभव और आपके प्रोजेक्ट को भविष्य-सुरक्षित करने के संदर्भ में लाभ श्रम के लायक हैं।