परिचय
वेबसाइट या वेब एप्लिकेशन बनाते समय, विशेष रूप से यदि उनमें बहुत सी विशेषताएँ हों टेम्प्लेट की गई सामग्री (जैसे ग्रिड या किसी श्रेणी से संबंधित वस्तुओं की सूची) - यह आमतौर पर एक अच्छा विचार है इसे पृष्ठों में विभाजित करें स्क्रीन पर एक बार में दिखाई देने वाली वस्तुओं की संख्या को कम करने के लिए।
इस लेख में, हम सीखेंगे कि शुरुआत से वैनिला जावास्क्रिप्ट का उपयोग करके हमारी वेब परियोजनाओं में पेजिनेशन कैसे लागू किया जाए।
इस लेख के प्रयोजन के लिए, हम सामग्री प्राप्त करेंगे इसका उदाहरण एपीआई प्रतिक्रिया। इसमें 100 डेटा बिंदु हैं, लेकिन हम केवल 30 का उपयोग करेंगे और एक समय में हमारी स्क्रीन पर 6 पोस्ट प्रदर्शित करेंगे।
Getting Started
अंतर्निहित Fetch API ब्राउज़रों का उपयोग करके API से सभी आवश्यक पोस्ट प्राप्त करने से पहले, हमें पहले एक मूल HTML मार्कअप बनाने की आवश्यकता होती है जिसे बाद में हमारी स्क्रिप्ट के माध्यम से गतिशील रूप से भर दिया जाएगा:
<div class="container"> <div class="title-section"> <h1 class="title">Posts</h1> </div> <div class="posts-section"></div> <div class="pagination-section"> <ul class="pagination"> <li class="page-item prev"><a class="page-link" href="#">Previous</a></li> <li class="page-item next"><a class="page-link" href="#">Next</a></li> </ul> </div>
</div>
REST API पोस्ट लाए जा रहे हैं
जैसा कि पहले उल्लेख किया गया है, पृष्ठांकन सामग्री को छोटे टुकड़ों में विभाजित करने के बारे में है। इसके लिए आवश्यक है कि आप डेटा प्राप्त करें, यह तय करें कि कब और कैसे विभाजित करना है, पृष्ठों की संख्या की गणना करें और फिर इसका एक भाग उपयोगकर्ता को दिखाएं। शुक्र है - बैक-एंड कार्यक्षमता आमतौर पर पहले कुछ कार्यों का ध्यान रखती है, और प्रासंगिक पृष्ठ, पृष्ठों की कुल संख्या और सामग्री लौटाती है प्रति पृष्ठ.
नोट: आप जिस विशिष्ट एपीआई के साथ काम कर रहे हैं उसके आधार पर - आप आलसी लोड परिणामों में सक्षम हो सकते हैं या नहीं भी हो सकते हैं। जब भी संभव हो - उन सभी को पहले से लोड करने के बजाय आलसी लोडिंग परिणामों को प्राथमिकता दें। अधिकांश आधुनिक एपीआई उन प्रथाओं का पालन करते हैं जो आपको सेट करने देते हैं limit
or page
गणना करें, और उन पृष्ठों की कुल संख्या वापस करें जिन्हें आप उपयोगकर्ता को प्रदर्शित कर सकते हैं।
आइए पहले अपनी सभी पोस्टों को लाने के द्वारा आरंभ करें और फिर बाद में हम प्रति पृष्ठ केवल कुछ डेटा बिंदुओं को क्वेरी करने के लिए इसमें संशोधन करेंगे:
const postsSection = document.querySelector(".posts-section"); const fetchPosts = async () => { const response = await fetch( "https://jsonplaceholder.typicode.com/posts" ); const posts = await response.json(); postsSection.innerHTML = ""; posts.forEach((post) => { postsSection.innerHTML += ` <div class="posts-card"> <div class="post-title"> <h2 class="post-title-text">${post.title}</h2> </div> <div class="post-body"> <p class="post-body-text"> ${post.body} </p> </div> </div> `; });
}; fetchPosts();
आइए जल्दी से ऊपर दिए गए कोड की जांच करें। सबसे पहले, हमने प्राप्त करके शुरुआत की div
तत्व जहां हम अपनी सभी सामग्री प्रदर्शित करेंगे class
नाम हमने सौंपा है div
. अंत में, हमने फ़ेच ऑपरेशन को हैंडल करने के लिए एक फंक्शन लिखा।
में fetchPosts()
समारोह, हमने इस्तेमाल किया एपीआई लायें से पदों को पुनः प्राप्त करने के लिए JSON प्लेसहोल्डर पोस्ट एपीआई, फिर द्वारा संदर्भित JSON डेटा संग्रहीत करें posts
चर और इस्तेमाल किया innerHTML
सामग्री के प्रत्येक टुकड़े को जोड़ने के लिए संपत्ति posts-section
उनके माध्यम से लूप करके।
इस बिंदु पर, हमने अपनी सभी सामग्री सफलतापूर्वक प्राप्त कर ली है।
नोट: आप एक अलग विधि का उपयोग करके भी सामग्री प्राप्त कर सकते हैं, लेकिन इससे पहले कि हम पेजिनेशन बनाने में गोता लगाएँ, यह सुनिश्चित कर लें कि आपकी सभी सामग्री उस पेज पर लोड हो गई है।
आइए तीन वेरिएबल्स घोषित करके शुरू करें जो हमारे वेब पेज के भीतर पेजिनेशन को लागू करने के लिए महत्वपूर्ण हैं। पहला है हम प्रति पृष्ठ कितनी पोस्ट घोषित करना चाहते हैं, फिर वर्तमान पृष्ठ संख्या (1
डिफ़ॉल्ट रूप से), और पृष्ठों की कुल संख्या.
नोट: स्टार्टर्ड एपीआई और डेटाबेस से डेटा का उपभोग करते समय, कुल संख्या पृष्ठ या डेटा बिंदु आमतौर पर लौटाए जाते हैं। यदि हमें कुल पृष्ठ संख्या प्राप्त नहीं होती है, तो इसकी गणना वस्तु की कुल संख्या और पृष्ठ आकार के माध्यम से की जा सकती है।
इस गाइड के लिए हम देंगे पृष्ठों की कुल संख्या की एक निश्चित संख्या 30
:
const numberPerPage = 6;
var pageNumber = 1;
var numberOfPages = 30;
पिछले अनुभाग में, हमने सभी पोस्ट एक ही पृष्ठ पर प्रदर्शित किए हैं, लेकिन हम एक समय में केवल छह दिखाना चाहते हैं। इसलिए, हमने सेट किया है numberPerPage
सेवा मेरे 6
जिसका उपयोग अब हम लाने के संचालन को समायोजित करने के लिए करेंगे ताकि यह केवल प्रदर्शित हो 6
पोस्ट नहीं।
यह विशिष्ट कार्यान्वयन पर निर्भर करता है, लेकिन एपीआई से परिणाम प्राप्त करते समय क्वेरी पैरामीटर का उपयोग करने की अनुमति देने के लिए यह व्यापक अभ्यास है, जो आपको एक निश्चित परिणाम प्राप्त करने की अनुमति देता है पृष्ठ परिणाम के। उदाहरण के लिए नकली REST API जिसका हम उपयोग कर रहे हैं, के लिए अनुमति देता है page
और limit
वे पैरामीटर जो आपको केवल उन बैचों को लोड करने देते हैं जिन्हें आप एक निश्चित समय पर दिखाएंगे।
इस तरह, हम केवल उस डेटा को लोड करते हैं जिसे हम उपयोगकर्ता को दिखाना चाहते हैं! फिर हम या तो तेजी से लोड होने के समय के लिए अगले पृष्ठ को प्री-फ़ेच कर सकते हैं, या केवल दिखाए जाने वाले डेटा को लोड करके प्राप्त कम्प्यूटेशनल स्पीडअप का आनंद ले सकते हैं।
हम अपने लाने के अनुरोध में संशोधन करके इन पैरामीटरों का उपयोग करेंगे:
const fetchPosts = async (pageNumber) => { const response = await fetch( `https://jsonplaceholder.typicode.com/posts?_page=${pageNumber}&_limit=${numberPerPage}` ); const posts = await response.json(); postsSection.innerHTML = ""; posts.forEach((post) => { postsSection.innerHTML += ` <div class="posts-card"> <div class="post-title"> <h2 class="post-title-text">${post.title}</h2> </div> <div class="post-body"> <p class="post-body-text"> ${post.body} </p> </div> </div> `; });
}; fetchPosts();
उपरोक्त कोड में, हमने एपीआई एंडपॉइंट में दो पैरामीटर जोड़े हैं जो हैं pageNumber
और प्रति पृष्ठ पदों की संख्या जो हमें हमारी पोस्ट को कई पेजों में तोड़ने में मदद करेगा और फिर इन पोस्ट को अब पेज नंबर के आधार पर प्रदर्शित किया जा सकता है।
साथ ही हम इसमें भी पास हुए हैं pageNumber
को fetchPosts()
फ़ंक्शन ताकि जब भी पेज बदले तो हम इस फ़ंक्शन को कॉल कर सकें:
आइए अब हमारे पृष्ठ के निचले भाग में स्थित पृष्ठ नेविगेशन बटनों में कार्यात्मकता जोड़ें और उन्हें पृष्ठ संख्या के आधार पर उपयुक्त सामग्री प्रदर्शित करने दें।
हम देखेंगे कि मार्कअप में हमारे पास पेजिनेशन बटन दिखाने वाला एक खंड था:
<div class="pagination-section"> <ul class="pagination"> <li class="page-item prev"><a class="page-link" href="#">Previous</a></li> <li class="page-item next"><a class="page-link" href="#">Next</a></li> </ul>
</div>
अब हम जोड़ने जा रहे हैं click
प्रत्येक बटन के लिए घटनाएँ ताकि जब उन्हें क्लिक किया जाए, तो उस पृष्ठ के लिए इच्छित सामग्री दिखाई दे।
कार्यान्वयन पूर्व बटन
यहाँ तर्क बहुत सरल है। हमें बस इतना करना है कि प्रतिनिधित्व करने वाले तत्व को पुनः प्राप्त करना है पिछला बटन, जोड़ें click
ईवेंट श्रोता और बटन क्लिक होने पर उपयुक्त सामग्री दिखाएं:
सर्वोत्तम प्रथाओं, उद्योग-स्वीकृत मानकों और शामिल चीट शीट के साथ, Git सीखने के लिए व्यावहारिक मार्गदर्शिका देखें। Googling Git कमांड को रोकें और वास्तव में सीखना यह!
const prev = document.querySelector('.prev');
prev.addEventListener('click', (e) => { e.preventDefault(); if (pageNumber > 1) { pageNumber--; fetchPosts(pageNumber); }
});
a . जोड़ने के बाद click
ईवेंट श्रोता, हमने जाँच की है कि क्या वर्तमान पृष्ठ संख्या इससे अधिक है 1
कॉल बैक समारोह में। यदि संख्या के बराबर या उससे कम है 1
, हम बस वर्तमान सामग्री दिखाते रहेंगे। लेकिन यदि वर्तमान पृष्ठ संख्या से अधिक है 1
हम इसके मूल्य को स्वतंत्र रूप से घटा सकते हैं और कॉल कर सकते हैं fetchPosts(pageNumber)
एक तर्क के रूप में पारित नए पृष्ठ संख्या के साथ कार्य करता है, इसलिए पिछले पृष्ठ की सामग्री दिखा रहा है।
कार्यान्वयन अगला बटन
यहाँ तर्क पूरी तरह से वही है जो के लिए है पिछला बटन, बस कुछ मामूली बदलावों के साथ। बेशक, हम सूची तत्व को कक्षा के साथ पुनः प्राप्त करेंगे next
के बजाय prev
. साथ ही, हम यह भी जाँचेंगे कि क्या वर्तमान पृष्ठ संख्या इससे कम है पृष्ठों की संख्या जिसे हम सेट करते हैं 30
मैन्युअल रूप से पहले। अंत में, हम वर्तमान पृष्ठ संख्या को घटाने के बजाय बढ़ा देंगे:
const next = document.querySelector(".next");
next.addEventListener("click", (e) => { e.preventDefault(); if (pageNumber < numberOfPages) { pageNumber++; fetchPosts(pageNumber); }
});
निष्कर्ष
जब भी आप अपने वेब एप्लिकेशन पर डेटाबेस या किसी अन्य डेटा स्रोत को प्रदर्शित करने का प्रयास करते हैं, तो सामग्री को छोटे, अधिक प्रबंधनीय हिस्सों में अलग-अलग प्रदर्शित करना महत्वपूर्ण होता है।
इस लेख में, हमने बिना किसी बाहरी लाइब्रेरी और टूल के जावास्क्रिप्ट के साथ पेजिनेशन को स्क्रैच से लागू करने के तरीके पर एक नज़र डाली।
- एसईओ संचालित सामग्री और पीआर वितरण। आज ही प्रवर्धित हो जाओ।
- प्लेटोब्लॉकचैन। Web3 मेटावर्स इंटेलिजेंस। ज्ञान प्रवर्धित। यहां पहुंचें।
- स्रोत: https://stackabuse.com/pagination-in-vanilla-javascript/
- 1
- 100
- 11
- 7
- 9
- a
- योग्य
- About
- ऊपर
- हासिल
- वास्तव में
- जोड़ा
- चेतावनी
- सब
- सभी पद
- की अनुमति देता है
- और
- एपीआई
- एपीआई
- दिखाई देते हैं
- आवेदन
- उपयुक्त
- तर्क
- लेख
- सौंपा
- वापस
- बैक-एंड
- आधारित
- बुनियादी
- से पहले
- शुरू किया
- सीमा
- तल
- ब्राउज़रों
- में निर्मित
- बटन
- परिकलित
- कॉल
- कौन
- वर्ग
- कुछ
- परिवर्तन
- चेक
- कक्षा
- कोड
- पूरी तरह से
- निष्कर्ष
- कंटेनर
- शामिल हैं
- सामग्री
- कोर्स
- बनाना
- बनाना
- महत्वपूर्ण
- महत्वपूर्ण
- वर्तमान
- तिथि
- डेटा अंक
- डाटाबेस
- चूक
- निर्भर करता है
- निर्भर करता है
- विभिन्न
- डिस्प्ले
- प्रदर्शित करता है
- से प्रत्येक
- पूर्व
- भी
- endpoint
- विशेष रूप से
- कार्यक्रम
- घटनाओं
- उदाहरण
- बाहरी
- और तेज
- Feature
- लाए गए
- कुछ
- भरा हुआ
- अंत में
- प्रथम
- तय
- फोकस
- का पालन करें
- से
- समारोह
- कार्यक्षमता
- आम तौर पर
- मिल
- gif
- जाना
- देना
- दी
- जा
- अच्छा
- अधिक से अधिक
- ग्रिड
- जमीन
- गाइड
- संभालना
- हाथों पर
- मदद
- यहाँ उत्पन्न करें
- मंडराना
- कैसे
- How To
- एचटीएमएल
- HTTPS
- नायक
- विचार
- लागू करने के
- कार्यान्वयन
- कार्यान्वयन
- in
- शामिल
- व्यक्तिगत रूप से
- बजाय
- परिचय
- IT
- आइटम
- जावास्क्रिप्ट
- JSON
- रखना
- जानें
- सीख रहा हूँ
- LG
- पुस्तकालयों
- सूची
- भार
- लोड हो रहा है
- देखिए
- लॉट
- बनाना
- निर्माण
- मैन्युअल
- उल्लेख किया
- तरीका
- नाबालिग
- आधुनिक
- अधिक
- अधिकांश
- नाम
- पथ प्रदर्शन
- आवश्यकता
- नया
- अगला
- संख्या
- वस्तु
- प्राप्त करने के
- ONE
- आपरेशन
- अन्य
- पृष्ठ पर अंक लगाना
- पैरामीटर
- पारित कर दिया
- टुकड़ा
- प्लेसहोल्डर
- प्लेटो
- प्लेटो डेटा इंटेलिजेंस
- प्लेटोडाटा
- बिन्दु
- अंक
- संभव
- पोस्ट
- व्यावहारिक
- अभ्यास
- प्रथाओं
- पसंद करते हैं
- सुंदर
- पिछला
- परियोजनाओं
- संपत्ति
- उद्देश्य
- जल्दी से
- RE
- प्राप्त करना
- को कम करने
- प्रासंगिक
- का प्रतिनिधित्व
- का अनुरोध
- अपेक्षित
- की आवश्यकता होती है
- प्रतिक्रिया
- बाकी
- परिणाम
- वापसी
- अंगूठी
- वही
- स्क्रीन
- अनुभाग
- सेट
- कई
- छाया
- दिखाना
- दिखाया
- सरल
- एक
- छह
- आकार
- छोटे
- So
- स्रोत
- विशिष्ट
- विभाजित
- स्टैकब्यूज
- मानकों
- शुरू
- रुकें
- की दुकान
- सफलतापूर्वक
- ऐसा
- एसवीजी
- लेता है
- कार्य
- RSI
- इसलिये
- तीन
- यहाँ
- पहर
- शीर्षक
- सेवा मेरे
- उपकरण
- कुल
- संक्रमण
- <strong>उद्देश्य</strong>
- us
- उपयोग
- उपयोगकर्ता
- आमतौर पर
- मूल्य
- Ve
- के माध्यम से
- वेब
- वेब एप्लीकेशन
- वेबसाइट
- या
- कौन कौन से
- मर्जी
- अंदर
- बिना
- काम कर रहे
- होगा
- आप
- आपका
- जेफिरनेट