DanLevy.net

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

Astro, Tailwind, MDX, Pagefind, और बहुत कुछ!

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

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

विषय-सूची

प्रोजेक्ट की आवश्यकताएँ

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

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

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

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

वर्षों से मैंने कई स्टैटिक साइट टूल्स के साथ काम किया है, जैसे Jekyll, Hugo, Slate, और Gatsby। साथ ही कई फ्रंट-एंड फ्रेमवर्क: Ember, Knockout, Angular, Vue और ज़ाहिर है React।

मेरे पास विकल्पों की सटीक रूप से ज़रूरत से ज़्यादा संख्या है, जिन्हें मैंने अंततः Remix, Next.js और Astro तक सीमित कर दिया,

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

मैंने Astro को चुना क्योंकि मैं कितनी जल्दी अर्थपूर्ण काम कर सकता था।

उनका API डिज़ाइन ताज़ा करने वाला रूप से सरल है। यह लचीलेपन और अच्छे डिज़ाइन मतों का शानदार संतुलन है।

यह थोड़ा आश्वस्त करने वाला था कि Astro में कोई स्पष्ट क्लाउड पूर्वाग्रह या फ्रेमवर्क एजेंडा नहीं है।

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

Astro: लर्निंग कर्व और प्रमुख विशेषताएँ

Astro जल्दी ही मेरे अपग्रेड की आधारशिला बन गया।

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

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

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

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

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

Astro के .astro कंपोनेंट्स को समझने का सबसे अच्छा तरीका उन्हें क्लाइंट-साइड कंपोनेंट्स के साथ तुलना करना और अंतर देखना है। (React, Vue, Svelte, आदि।)

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

आधुनिक CSS: वाह

फ्रंटएंड डेवलपमेंट में वापस आते हुए, मैं मूल CSS में हुई प्रगति से प्रसन्न हुआ:

खोज: Pagefind

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

Astro के कम्युनिटी इंटीग्रेशन को ब्राउज़ करते समय मैं एक शानदार टूल पर ठोकर खाया जिसके बारे में मैंने काश पहले जाना होता: Pagefind

कुछ टूल किसी समस्या को उतनी अच्छी तरह हल करते हैं जितना Pagefind स्थानीय साइट खोज को हल करता है।

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

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

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

दुर्भाग्यवश, मुझे Disqus और वर्षों में जमा हुई अपनी टिप्पणियों को अलविदा कहना पड़ा।

मैं अपनी साइट पर तृतीय-पक्ष स्क्रिप्ट्स पर बेहतर नियंत्रण/दृश्यता चाहता था।

इसके अलावा, यह सरल और रखरखाव योग्य होना चाहिए।

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

Tailwind: पछतावे

केवल एक तकनीक है जिसका उपयोग करते हुए मुझे बढ़ता पछतावा हो रहा है: Tailwind।

समय के साथ, मैं लिखने बनाए रखने की लागत अंतर महसूस कर सकता हूँ। Tailwind लिखने में बहुत तेज़ है, हालाँकि एक बार यह काफी जटिल हो जाता है, इसे पढ़ना और बढ़ाना थकाऊ हो सकता है।

निष्कर्ष

Astro के इर्द-गिर्द बने आधुनिक स्टैक में अपने पुराने Gatsby v1 साइट को अपग्रेड करना एक मज़ेदार अनुभव था। 10/10, ज़रूर अनुशंसा करूँगा।

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