paint-brush
Nuxt, Nuxt Content और Cloudinary के साथ अपना खुद का ब्लॉग कैसे बनाएंद्वारा@terieyenike
5,547 रीडिंग
5,547 रीडिंग

Nuxt, Nuxt Content और Cloudinary के साथ अपना खुद का ब्लॉग कैसे बनाएं

द्वारा Teri14m2022/05/21
Read on Terminal Reader
Read this story w/o Javascript

बहुत लंबा; पढ़ने के लिए

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

People Mentioned

Mention Thumbnail

Companies Mentioned

Mention Thumbnail
Mention Thumbnail

Coin Mentioned

Mention Thumbnail
featured image - Nuxt, Nuxt Content और Cloudinary के साथ अपना खुद का ब्लॉग कैसे बनाएं
Teri HackerNoon profile picture

इंटरनेट पर अपने ज्ञान को लिखने और साझा करने के लिए एक ब्लॉग का होना आवश्यक है ताकि दृश्यता और हमें अपने क्षेत्र में एक विषय पर एक प्राधिकरण के रूप में जाना जा सके।

यह लेख आपको सिखाएगा कि एक ब्लॉग कैसे बनाया जाए जिसमें प्रत्येक लेख के लिए गतिशील पृष्ठ हों।

विषयसूची

  • आवश्यक शर्तें
  • शुरू करना
  • नेक्स्ट क्या है?
  • नेक्स्ट कंटेंट क्या है?
  • क्लाउडिनरी क्या है?
  • Nuxt . के साथ ब्लॉग बनाना
  • ब्लॉग नोट्स बनाना
  • पोस्ट ला रहा है
  • डायनामिक पेज बनाना
  • अंतिम विचार
  • और अधिक जानें

साथ चलने के लिए, GitHub पर कोडबेस और इसके रेपो और संदर्भ के लिए डेमो देखें।

आवश्यक शर्तें

इस ट्यूटोरियल को पूरा करने के लिए निम्नलिखित की आवश्यकता है:

  • बादल खाता। साइन अप मुफ़्त है
  • जावास्क्रिप्ट का बुनियादी ज्ञान
  • Vue . से परिचित

शुरू करना

आरंभ करने के लिए, टर्मिनल खोलें और कमांड चलाएँ:

 npx create-nuxt-app blog-for-developers

ऊपर दिया गया कमांड एक कमांड लाइन इंटरफेस (सीएलआई) प्रांप्ट शुरू करेगा जो हमें अपनी परियोजना के विभिन्न पहलुओं को कॉन्फ़िगर करने की अनुमति देगा।

अब जब बॉयलरप्लेट सभी फाइलों और फ़ोल्डरों के साथ सेट हो गया है, तो विकास सर्वर को चलाते हैं जो इस पर उपलब्ध है

 http://localhost:3000
परियोजना के अंदर।

 # change directory to project folder
cd blog-for-developers

# start the development environment
npm run dev

नेक्स्ट क्या है?
NuxtJS एक खुला स्रोत सहज ज्ञान युक्त Vue ढांचा है जो हमें वेब विकास को सरल और शक्तिशाली बनाते हुए यूजर इंटरफेस बनाने की अनुमति देता है।

नेक्स्ट कंटेंट क्या है?
इस परियोजना के प्रारंभिक सेटअप के दौरान, हमने Nuxt सामग्री मॉड्यूल का चयन किया। यह मॉड्यूल हमें एपीआई जैसे इंटरफेस के माध्यम से मार्कडाउन, जेएसओएन, वाईएएमएल, एक्सएमएल और यहां तक कि सीएसवी फाइलों तक पहुंचने के लिए गिट-आधारित हेडलेस सीएमएस के रूप में हमारे कोडबेस का उपयोग करने देता है। इस मॉड्यूल के साथ

 @nuxt/content
, यह इंजेक्ट करेगा
 $content
उदाहरण के लिए हमारी परियोजना में विश्व स्तर पर इसे किसी परियोजना में कहीं भी एक्सेस करने के लिए।

क्लाउडिनरी क्या है?
क्लाउडिनरी वेब और मोबाइल एप्लिकेशन के लिए क्लाउड-सेवा छवि और वीडियो प्रबंधन उपकरण है। क्लाउडिनरी के साथ, हम किसी भी ब्राउज़र और डिवाइस पर डिजिटल अनुभव अपलोड, बना और प्रबंधित कर सकते हैं।

Nuxt . के साथ ब्लॉग बनाना

इससे पहले कि हम Nuxt सामग्री का उपयोग करके ब्लॉग के लिए सामग्री को मार्कडाउन में बनाएं, आइए पहले ब्लॉग के लिए लैंडिंग पृष्ठ बनाएं जिसमें नेविगेशन लिंक और कुछ टेक्स्ट शामिल होंगे।

फ़ॉन्ट शैली जोड़ें
में

 nuxt.config.js file
, हम अपने पसंदीदा फ़ॉन्ट को हेड सेक्शन में जोड़ सकते हैं और एक विशेष फ़ॉन्ट परिवार का उपयोग कर सकते हैं जैसा कि नीचे देखा गया है:

उपरोक्त कोड ब्लॉक का पृष्ठ पर तब तक कोई प्रभाव नहीं पड़ेगा जब तक हम उस सीएसएस को नहीं लिखेंगे जो फ़ॉन्ट का उपयोग करेगा।

अब, निम्न कोड को इसमें जोड़ें

 pages/index.vue
जिसमें होम पेज पर नेविगेशन लिंक और कुछ टेक्स्ट शामिल होंगे। घटक निकालें,
 <Tutorial />
.

 <template>    <section class =" showcase ">      < header >        < h2 class =" logo ">          < nuxt - link to ="/"> ecosurf </ nuxt - link >        </ h2 >        < nav class =" nav desktop ">          < ul >            < li class =" nav__list ">              < nuxt - link to ="/ blogs "> Stories </ nuxt - link >            </ li >          </ ul >        </ nav >      </ header >      < video
        autoplay
        loop muted
        src =" https: // res . cloudinary . com / terieyenike / video / upload / v1651393236 / mixkit - tropical - island - landscape - view - 4692 - large_yanvml . mp4 "></ video >      < div class =" overlay "></ div >      < div class =" text ">        < h2 data - type =" uppercase " class =" stroke "> Never Stop </ h2 >        < h3 data - type =" uppercase "> Exploring The World </ h3 >        < p >          View of the tropical island landscape, from a hill with houses, palm
          trees and many trees, and in the distance the hills that surround the
          sea, on a sunny day .        </ p >      </ div >      < ul class =" social ">        < li >          < a href =" https: // twitter . com / terieyenike " rel =" noopener noreferrer " target =" _blank ">< img
            alt =" twitter profile " src =" https: // i . ibb . co / Wnxq2Nq / twitter . png "/></ a >        </ li >        < li >          < a href =" https: // instagram . com / terieyenike " rel =" noopener noreferrer " target =" _blank ">< img
            alt =" instagram profile " src =" https: // i . ibb . co / ySwtH4B / instagram . png "/></ a >        </ li >      </ ul >    </ section > </ template >

उपरोक्त कोड ब्लॉक में, हमने a . को शामिल किया है

 <video>
क्लाउडिनरी में संग्रहीत वीडियो के स्रोत के साथ ऑटोप्ले, लूप, और म्यूट जैसी विशेषताओं के साथ जो वीडियो लोड होने पर म्यूट कर देता है। क्लाउडिनरी में संग्रहीत मीडिया प्राप्त करने के लिए, हम अपने वांछित वीडियो को मीडिया लाइब्रेरी टैब पर अपलोड करते हैं। इसके बाद, उस URL को कॉपी करें जिसे संलग्न किया जाएगा
 src
की
 <video>
.

साथ ही, हमने नेविगेशन हेडर में लिंक को के साथ संदर्भित किया है

 nuxt-link
दोनों घर के लिए घटक
 /
और यह
 /blogs
मार्ग जो हम अपने सभी ब्लॉग देखने के लिए बनाएंगे।

यह सुनिश्चित करने के लिए कि हमारे पेज को सीएसएस के साथ स्टाइल किया गया है, प्रोजेक्ट के रूट पर एक फोल्डर बनाएं,
 assets/styles/main.css
, और इस सार से निम्नलिखित शामिल करें।

में
 nuxt.config.js
फ़ाइल, निम्न के साथ बनाई गई CSS फ़ाइल को शामिल करने के लिए फ़ाइल को अपडेट करें:

 export default {      ...      css : [ '@/assets/styles/main.css' ],      ... }

यहां बताया गया है कि हमारा पेज कैसा दिखना चाहिए:

ब्लॉग नोट्स बनाना

अपनी ब्लॉग साइट बनाने के लिए, हमारे पास प्रदर्शित करने और प्रस्तुत करने के लिए सामग्री होनी चाहिए

 /blogs
पृष्ठ। सबसे पहले, एक बनाएं
 content
निर्देशिका और फिर ब्लॉग निर्देशिका जिसमें सभी मार्कडाउन फ़ाइलें होंगी। मार्कडाउन में सभी सामग्री को लिखना विभिन्न प्रोग्रामिंग भाषाओं के लिए सिंटैक्स हाइलाइटिंग के साथ शीर्षक, लिंक और कोड ब्लॉक जैसे बहुत सारे मार्कडाउन सिंटैक्स मानकों का समर्थन करता है।

पुनश्च: Nuxt सामग्री सभी फ़ाइलों को संग्रहीत करने के लिए सामग्री फ़ोल्डर का उपयोग करती है।

सामग्री निर्देशिका में मार्कडाउन फ़ाइल का एक उदाहरण यहां दिया गया है। फ़ाइल में निम्नलिखित जोड़ें
 content/blogs/egghead.md
.

 ---    title: Egghead    cover _image: https://res.cloudinary.com/terieyenike/image/upload/v1651446130/pexels-jeremy-bishop-8241100_ oklfpe.jpg    author: Teri Eyenike    description: All we need to do is open up our terminal and run the command npm install @nuxt/content. Once it's installed, you'll see that inside of our package.json, we see our Nuxt Content module. Next, to finalize the setup, let's go ahead and open up our nuxt.config.js, and let's go ahead and scroll down to the section that's labeled Modules.    date: May 2, 2021    publishOn: 2021-05-02T00:00:00    tags: ["learning", "platform"] ---    [ Egghead ]( https://www.egghead.io ) is a great platform for developers to enhance their skills! <!-- more content -->

मार्कडाउन फाइलों में फ्रंट मैटर की अवधारणा का उपयोग करके मेटाडेटा जोड़ने की क्षमता होती है, जिसे फ्रंट मैटर की शुरुआत और स्टॉप पर ट्रिपल-डैश सिंटैक्स के साथ दर्शाया जाता है। मेटाडेटा, जो पाठकों को प्रदर्शित किया जाता है जैसे प्रकाशन का समय और ब्लॉग सामग्री का अंश, वह है जो पाठकों को प्रदर्शित किया जाता है। अन्य विभिन्न गुणों को शामिल किया जा सकता है।

पीएस: सामने के मामले के अंदर, यह वाईएएमएल सिंटैक्स का उपयोग करता है।

पोस्ट ला रहा है
ब्लॉग पेज के लिए पोस्ट लाने के लिए, आइए एक नया मार्ग बनाएं

 pages
. एक फ़ोल्डर बनाएँ, जिसे ब्लॉग कहा जाता है, और उसमें बनाएँ
 index.vue
निर्देशिका के लिए फ़ाइल, ब्लॉग।

इसके बाद, निम्नलिखित कोड को कॉपी करें और उसमें जोड़ें
 pages/blogs/index.vue
फ़ाइल प्रदान की गई मार्कडाउन फ़ाइलों को प्रदर्शित करने के लिए।

 // pages/blogs/index.vue
    <template>      < main >
        < header >
          < h2 class = "logo" >
            < nuxt-link to = "/" > ecosurf </ nuxt-link >
          </ h2 >
          < nav class = "nav desktop" >
            < ul >
              < li class = "nav__list" >
                < nuxt-link to = "/blogs" > Stories </ nuxt-link >
              </ li >
            </ ul >
          </ nav >
        </ header >
        < div class = "container section" >
          < div class = "container__grid" >
            < div v-for = "blog in blogs" :key = "blog.slug + blog.createdAt" class = "card" >
              < img :src = "blog.cover_image"
                   alt = "blog photographs" />
              < div class = "pad__card" >
                < div class = "author" >
                  < p class = "author__name" > {{ blog.author }} </ p > < span > | </ span >
                  < p > {{ blog.date }} </ p >
                </ div >
                < h2 class = "title" > {{ blog.title }} </ h2 >
                < p > {{                    blog.description.substring(0, 150)                  }}... </ p >
                < button >
                  < nuxt-link :to = "`/blogs/${blog.slug}`" > Read More </ nuxt-link >
                </ button >
              </ div >
            </ div >
          </ div >
        </ div >
      </ main >
    </template>    < script >
    export default {      async asyncData ( {$content} ) {        const blogs = await $content( "blogs" ).sortBy( "publishOn" , "desc" ).fetch()        return {          blogs        }      },      head ( ) {        return {          title : "Read interesting stories as a nomad" ,          meta : [            {              hid : 'description' ,              name : 'description' ,              content : 'Daily and juicy content as you learn, work, and relax. WFH'
            }          ]        }      }    }    </ script >
    < style scoped >
    header {      background : #111111 ;      position : unset;    }    .container {      width : 85% ;      max-width : 75rem ;      margin -inline: auto;    }    .section {      padding : 3em 0 ;    }    .container__grid {      display : grid;      gap: 2em ;      grid-template- columns : repeat (auto-fit, minmax ( 19rem , 1 fr));    }    .card {      background : #f0f7f4 ;      box-shadow : 0px 4px 3px rgba ( 0 , 0 , 0 , 0.1 );      border-radius : 5px ;    }    .card img {      object-fit : cover;      border-top-left-radius : 5px ;      border-top-right-radius : 5px ;      width : 100%
    }    .pad__card {      padding : 2em ;    }    .author {      display : flex;      align-items : center;    }    .author , .title {      margin-bottom : 1em ;    }    .author span {      margin : 0 0.3em ;    }    .author__name {      text-transform : capitalize;    }    button {      border : unset;      padding : 1em 2em ;      margin-top : 2em ;      background : #0D5159 ;      font-weight : 700 ;      cursor : pointer;    }    button a {      color : #fff ;    }    </ style >

उपरोक्त कोड ब्लॉक निम्न कार्य करता है:

  •  asyncData
    : हमारे पृष्ठ को Nuxt से उत्पन्न करने के लिए उपयोग किया जाता है क्योंकि यह उपयोगकर्ताओं के लिए अलग-अलग फ़ाइलों को स्थिर रूप से उत्पन्न करता है। हम में गुजरते हैं
     $content
    विधि जहां ब्लॉग नोट्स संग्रहीत किए जाते हैं,
     sortBy()
    समारोह, और
     fetch
    तरीका।
  •  sortBy()
    : दो पैरामीटर लेता है,
     publishOn
    (इसे तिथि के अनुसार क्रमबद्ध करें) और सबसे हाल ही में प्रकाशित सामग्री के आधार पर आप सामग्री को कैसे दिखाना चाहते हैं, इस पर desc विशेषताएँ
  • प्रत्येक ब्लॉग आलेख को गतिशील बनाने के लिए, हम उसे एक URL को निर्दिष्ट करेंगे, जहां वह है
     /blogs/
    ब्लॉग स्लग का उपयोग करके और पढ़ें बटन पर क्लिक करें
     <nuxt-link>
    अवयव।

पदों का प्रतिपादन
सामग्री निर्देशिका से प्रदान की गई पोस्ट के स्निपेट को देखने के लिए अंतिम चरण ब्लॉग पर v-for निर्देश और लूप का उपयोग करना और प्रत्येक लेख को एक कार्ड में प्रस्तुत करना है।

यहां बताया गया है कि ब्लॉग पेज अब कैसा दिखना चाहिए:

डायनामिक पेज बनाना

आइए अब प्रत्येक ब्लॉग पोस्ट के लिए डायनामिक URL रूट वाले पेज बनाएं। Nuxt में, गतिशील पृष्ठ बनाने के लिए, हम .vue फ़ाइल नाम से पहले एक अंडरस्कोर जोड़ते हैं ताकि URL को हार्डकोड न किया जा सके।

हम तब बनाते हैं

 _slug.vue
ब्लॉग निर्देशिका के अंतर्गत फ़ाइल करें और निम्न कोड जोड़ें:

 // pages/blogs/_slug.vue
    <template>      < main >
        < header >
          < h2 class = "logo" >
            < nuxt-link to = "/" > ecosurf </ nuxt-link >
          </ h2 >
          < nav class = "nav desktop" >
            < ul >
              < li class = "nav__list" >
                < nuxt-link to = "/blogs" > Stories </ nuxt-link >
              </ li >
            </ ul >
          </ nav >
        </ header >
        < div class = "container" >
          < div class = "return" >
            < nuxt-link to = "/" >
              < img alt = "back to home" src = "/home.png" />
            </ nuxt-link >
            < span > / </ span >
            < nuxt-link to = "/blogs" > Blog </ nuxt-link >
            < span > / </ span >
            < p > {{ note.title.substring(0, 15) }}... </ p >
          </ div >
          < section >
            < h1 > {{ note.title }} </ h1 >
            < nuxt-content :document = "note" cla />
          </ section >
        </ div >
      </ main >
    </template>    < script >
    export default {      async asyncData ( {$content, route} ) {        const note = await $content( `blogs/ ${route.params.slug} ` ).fetch()        return {          note        }      }    }    </ script >
    < style scoped >
    header {      background : #111111 ;      position : unset;    }    .container {      width : 85% ;      max-width : 75rem ;      margin -inline: auto;    }    section {      padding-bottom : 2em ;    }    .return {      display : flex;      margin : 1.5em 0 ;    }    .return img {      width : 20px ;      height : 20px ;    }    .return span {      margin : 0 1em ;    }    h1 {      margin-bottom : 1em
    }    </ style >

कोड का यह ब्लॉक निम्न कार्य करता है:

  •  ${route.params.slug}
    : हम रूट पैरामीटर और स्लग का उपयोग करके निर्देशिका ब्लॉग से एक विशिष्ट फ़ाइल लाने के लिए सामग्री का उपयोग करते हैं जो हमारे वास्तविक फ़ाइल नाम पर मैप करेगा
  • मार्कडाउन को मार्कडाउन फ़ाइल में परिभाषित वास्तविक सामग्री के रूप में प्रस्तुत करने के लिए, हम nuxt-content घटक का उपयोग करते हैं और प्रोप को पास करते हैं
     document
    पूरे के साथ
     note
    वस्तु
  •  scoped
    : स्कोप को शैली तत्व में परिभाषित करना सुनिश्चित करें कि स्टाइल केवल एक विशिष्ट पृष्ठ पर लागू होता है

अंतिम विचार

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

और अधिक जानें

लाइव डेमो आज़माएं