"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > पेंच कसना! मैंने अपना स्वयं का स्टेटिक साइट जेनरेटर विकसित किया है!

पेंच कसना! मैंने अपना स्वयं का स्टेटिक साइट जेनरेटर विकसित किया है!

2024-08-29 को प्रकाशित
ब्राउज़ करें:482

एक ही काम करने के हजारों नए तरीकों के रचनाकारों के कारण आजकल वेब विकास इतना जटिल हो गया है। वेब विकास के शुरुआती दिनों में उनके पास PHP और jQuery थे, जो हमारी ज़रूरत की हर चीज़ करते थे। लेकिन खैर अब चीजें बदल गई हैं.

लंबी कहानी को छोटे में

इसलिए, मैं अपनी निजी वेबसाइट बनाने का तरीका ढूंढ रहा था। जिसमें कुछ ब्लॉग और मेरा प्रोजेक्ट शोकेस होता, बस इतना ही, कोई बड़ी बात नहीं है ना? खैर, हालाँकि बात भी वही है। इसलिए, मेरा प्रारंभिक विचार इन्हें अपने तकनीकी स्टैक के रूप में उपयोग करने का था

  • प्रतिक्रिया
  • फायरबेस/सुपाबेस
  • टेलविंड सीएसएस
  • तैनाती के लिए क्लाउडफ्लेयर पेज

खैर, यह सुखद अंत हो सकता है लेकिन... ?

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

रिएक्ट सामग्री संचालित साइटों के लिए उपयुक्त क्यों नहीं है?

चैटजीपीटी ने कहा,

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

अगला लक्ष्य: NextJs

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

देखिए, मुझे हमेशा क्लाउडफ्लेयर पेजों का उपयोग करना पसंद था और मैं उसी के साथ रहना चाहता था, इसके अलावा मैं चाहता था कि क्लाउडफ्लेयर की मुफ्त ईमेल रूटिंग में एक कस्टम ईमेल पता मेरे डोमेन से जुड़ा हो जिससे लागत कम हो।

क्लाउडफ्लेयर पर नेक्स्टजेएस

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

खैर, इस बिंदु पर मैं निराश था और मेरे पास आखिरी विकल्प था SSG

अगला समाधान: एसएसजी

अब एसएसजी अच्छा है, और मैं यहां के महत्व को समझता हूं। समस्या यह है कि मैंने पहले कभी एसएसजी के साथ काम नहीं किया है और इसके कई रास्ते हैं। ह्यूगो, गैट्सबी, एस्ट्रो ब्ला ब्ला जैसी चीजें हैं। और शायद अधिक. अब मैं उनमें से किसी से भी परिचित नहीं था और इस बिंदु पर मैं इतना निराश था कि मैं एक साधारण ब्लॉग ऐप के लिए एक नया टूल सीखने पर थोड़ा भी निवेश करने को तैयार नहीं था। तो मैं ऐसा कह रहा था कि मैं अपना काम खुद करूंगा।

अपना स्वयं का स्टेटिक साइट जेनरेटर बनाना।

कुछ बिंदु जिनके कारण मैंने अपना स्वयं का स्थैतिक साइट जनरेटर विकसित करने का निर्णय लिया

  1. मैं निराश था (बेशक हाहाहा)
  2. चूंकि मैं अपनी चीज़ के लिए अपना स्वयं का टूल बना रहा हूं, पेज कैसे उत्पन्न होंगे इस पर मेरा पूरा नियंत्रण होगा। वे कैसे दिखेंगे.
  3. मुझे नया आविष्कार करना पसंद है।
  4. मेरे पास बिताने के लिए खाली समय था।

योजना

योजना वेबसाइट बनाने के पुराने तरीके पर आधारित थी। अलग-अलग लेखों के अपने स्वयं के HTML पृष्ठ होंगे।

यहां पूरी रूपरेखा है:

  1. मैं पॉलिन मार्कडाउन फाइलों पर लिखूंगा
  2. मार्कडाउन को सादे HTML में पार्स करने के लिए पायथन का उपयोग करें
  3. मेरे पास पहले से ही एक टेम्पलेट होगा जहां विभिन्न अनुभागों को गतिशील रूप से इंजेक्ट किया जाएगा।
  4. इसके अलावा मेरे पास लेख के अनुरूप एक कॉन्फ़िगरेशन फ़ाइल होगी। तो फ़ाइल पदानुक्रम कुछ इस तरह दिखेगा
articles/
├── art-1
│   ├── art.md
│   └── config.json
├── art-2
│   ├── art.md
│   └── config.json
├── art-3
│   ├── art.md
│   └── config.json
└── art-4
    ├── art.md
    └── config.json

इसलिए, प्रत्येक पोस्ट का अपना फ़ोल्डर होगा और फ़ोल्डर में config.json और art.md होगा, पायथन स्क्रिप्ट template.html लेगी और उस HTML टेम्पलेट में गतिशील सामग्री डालेगी, उदाहरण के लिए पोस्ट शीर्षक, स्लग, कॉन्फ़िग फ़ाइल से थंबनेल और पार्स की गई मार्कडाउन फ़ाइल से मुख्य लेख। सबसे महत्वपूर्ण बात यह है कि यह एसईओ और सोशल मीडिया के लिए गतिशील रूप से मेटा टैग उत्पन्न करेगा। इसके बाद, यह art/.html नामक फ़ाइल में परिवर्तन लिखेगा ताकि पोस्ट लिंक example.com/art/slug हो। &&&]

इसे कैसे एकीकृत किया गया?

ठीक है, इसलिए मैंने जनरेटर के साथ इंटरैक्ट करने के लिए एक सीएलआई इंटरफ़ेस विकसित किया है। मैंने इसे

fit नाम दिया है, आप इसे F it के रूप में जानते हैं। इसमें निम्नलिखित आदेश या विकल्प हैं:

$ ./fit --help फ़िट: इसे f**k बिल्ड सिस्टम के रूप में भी जाना जाता है मेरी निजी साइट के लिए एक निर्माण प्रणाली शाज़िन द्वारा विकसित की गई है प्रयोग फिट कमानों init लेख/कला पर एक नया पोस्ट टेम्पलेट बनाता है-[n] कला का निर्माण करें- निर्दिष्ट आलेख का निर्माण करता है सिंक वैश्विक आलेख अनुक्रमणिका को होमपेज पर सिंक करता है अपलोडर ने GTK GUI छवि अपलोडर लॉन्च किया अपलोड निर्दिष्ट फ़ाइल को फायरबेस पर अपलोड करता है तैनाती स्थानीय परिवर्तनों को दूरस्थ रिपॉजिटरी में तैनात करती है सहायता, -h, --help इस सहायता मेनू को प्रदर्शित करता है
$ ./fit --help
fit: also known has f**k it build system
A build system for my personal site developed by Shazin

USAGE
     fit 
COMMANDS
    init                Creates a new post template at articles/art-[n]
    build art-       Builds the specified article
    sync                Syncs the global articles index to homepage
    uploader            Launches the GTK GUI image uploader
    upload   Uploads the specified file to firebase
    deploy              Deploys local changes to remote repository
    help, -h, --help    Displays this help menu

परिनियोजन तंत्र

तो, जैसा कि मैंने कहा कि मैं तैनाती के लिए क्लाउडफ्लेयर पेजों का उपयोग करना चाहता था। मूल रूप से मैंने जो किया है वह यह है कि मैंने प्रोड नामक एक शाखा बनाई है और जब भी ./fit डिप्लॉय कमांड चलाया जाता है तो यह मूल रूप से सभी आवश्यक फाइलों को प्रोड शाखा में कॉपी कर देगा और परिवर्तनों को जीथब पर भेज देगा। फिर, क्लाउडफ्लेयर स्वचालित रूप से परिवर्तनों का निर्माण और पुन: तैनाती करेगा।

चित्र सौंपना

छवियों या किसी भी स्थिर फ़ाइलों को संभालने के लिए मैंने फायरबेस स्टोरेज का उपयोग किया है, ./fit अपलोडर एक जीटीके आधारित जीयूआई अपलोडर खोलेगा जिससे मैं एक छवि अपलोड कर सकता हूं और यह मुझे सार्वजनिक यूआरएल देगा जो मैं कर सकता हूं कॉपी करें, यह इस प्रकार दिखता है:

अपलोड इंटरफ़ेस

Screw it! I

पोस्ट अपलोड इंटरफ़ेस

Screw it! I

सीएलआई इंटरफ़ेस

एक सीएलआई इंटरफ़ेस भी है जिसका उपयोग ./fit अपलोड

Screw it! I

डायनामिक एम्बिएंट बैकग्राउंड

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

Screw it! I

टिप्पणियाँ और चर्चा

चूंकि मैं मूल रूप से बिना किसी डेटाबेस या बिल्कुल भी बैकएंड सेवा के साथ काम कर रहा था, मुझे इसके लिए एक बाहरी सेवा चुननी पड़ी और डिस्कस से बेहतर यह और क्या हो सकता है।

क्या यह इसके लायक था?

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

ऊपर लपेटकर

इसलिए, मुझे इस परियोजना के साथ वास्तव में मजेदार अनुभव हुआ है और उम्मीद है कि मैं और अधिक सुधार करूंगा और इसमें और अधिक कार्यक्षमताएं जोड़ूंगा। अभी यह बहुत बुनियादी और सरल है, जो मैं चाहता था। यदि आपको यह प्रोजेक्ट पसंद है या आप चाहते हैं कि मैं इसका स्रोत खोलूं तो कृपया मुझे बताएं। ओह, और यह उस साइट का लिंक है जिसके बारे में मैं चिल्ला रहा था shazin.me पढ़ने के लिए धन्यवाद।

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/shazin/screw-it-ive-development-my-own-static-site-generator-27cd?1 यदि कोई उल्लंघन है, तो कृपया स्टडी_गोलंग@163.com पर संपर्क करें। इसे हटाने के लिए
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3