جاوا اسکرپٹ اور متعدد زمروں کے ساتھ پروڈکٹ فلٹرنگ کو بڑھانا
متحرک، صارف دوست ویب صفحات بنانے میں ہموار نیویگیشن اور مواد کی آسان فلٹرنگ کی پیشکش شامل ہے۔ یہ خاص طور پر اس وقت مفید ہے جب پروڈکٹس یا آئٹمز کی نمائش کرتے ہیں جو متعدد زمروں میں آتے ہیں۔ JavaScript کا استعمال کرتے ہوئے، ہم متعدد زمروں کی بنیاد پر آئٹمز کو فلٹر کرنے کا ایک بدیہی طریقہ نافذ کر سکتے ہیں، جس سے صارفین کے لیے بالکل وہی چیز تلاش کرنا آسان ہو جاتا ہے جس کی وہ تلاش کر رہے ہیں۔
اس منظر نامے میں، زمرہ کے بٹن پر کلک کرنے سے صفحہ پر دکھائے گئے آئٹمز کو فلٹر کرنا چاہیے۔ صارف کو بیک وقت متعدد زمروں کو منتخب کرنے کے قابل ہونا چاہیے، جس سے مصنوعات کے مزید موزوں نظارے کی اجازت دی جائے۔ مثال کے طور پر، "سالمن" اور "کیکڑے" کو منتخب کرنے سے صرف دونوں اجزاء پر مشتمل آئٹمز دکھائے جائیں۔
فی الحال، بہت سے نفاذات واحد زمرے کی فلٹرنگ کے لیے اچھی طرح کام کرتے ہیں، لیکن متعدد زمروں کو شامل کرنا مشکل ہو سکتا ہے۔ چیلنج اس بات کو یقینی بنانے میں ہے کہ کون سے آئٹمز کو دکھانا یا چھپانا ہے اس کا فیصلہ کرتے وقت تمام منتخب زمروں پر غور کیا جائے۔ یہ مضمون جاوا اسکرپٹ کا استعمال کرتے ہوئے ایک مؤثر طریقے سے ایک قسم کی فلٹرنگ کو کثیر زمرہ کی فلٹرنگ تک بڑھانے کا طریقہ تلاش کرتا ہے۔
اس گائیڈ میں، ہم ایک ایسے حل کے ذریعے چلیں گے جو متحرک طور پر متعدد فعال بٹنوں کی بنیاد پر کارڈز کو فلٹر کرتا ہے، جو ایک آسان اور صارف دوست تجربہ فراہم کرتا ہے۔ اس JavaScript حل کو نافذ کرنے سے، آپ سیکھیں گے کہ کس طرح اپنے ویب صفحہ کی انٹرایکٹیویٹی کو بہتر بنایا جائے اور صارف کی مصروفیت کو بڑھایا جائے۔
حکم | استعمال کی مثال |
---|---|
every() | The every() method is used to check if all selected categories match the categories of each card. This is crucial in ensuring that multiple category filters work correctly. For example, activeCategories.every(cat =>every() طریقہ یہ چیک کرنے کے لیے استعمال کیا جاتا ہے کہ آیا تمام منتخب کردہ زمرے ہر کارڈ کے زمرے سے مماثل ہیں۔ یہ یقینی بنانے کے لیے بہت ضروری ہے کہ متعدد زمرہ کے فلٹرز صحیح طریقے سے کام کریں۔ مثال کے طور پر، ActiveCategories.every(cat => cardCategories.includes(cat)) اس بات کو یقینی بناتا ہے کہ تمام منتخب کردہ زمرے کارڈ کے زمرے میں شامل ہوں۔ |
toggle() | یہ کمانڈ کلاس کو آن یا آف کر دیتی ہے۔ اس کا استعمال متحرک طور پر ایکٹیو بٹن کلاس کو کلک کرنے پر زمرہ کے بٹن سے شامل کرنے یا ہٹانے کے لیے کیا جاتا ہے۔ اس سے یہ ٹریک کرنے میں مدد ملتی ہے کہ آیا کوئی بٹن فعال ہے، جس سے یہ متاثر ہوتا ہے کہ کون سے کارڈ دکھائے گئے ہیں یا چھپے ہوئے ہیں۔ |
filter() | The filter() method creates a new array with all elements that pass a test. In the Node.js example, products.filter(product => selectedCategories.every(cat =>filter() طریقہ ٹیسٹ پاس کرنے والے تمام عناصر کے ساتھ ایک نئی صف تیار کرتا ہے۔ Node.js مثال میں، products.filter(product => selectedCategories.every(cat => product.categories.includes(cat))) صارف کے منتخب کردہ زمروں کی بنیاد پر مصنوعات کو فلٹر کرتا ہے۔ |
split() | اسپلٹ() کا طریقہ زمرہ جات کے سٹرنگ کو ایک صف میں تبدیل کرنے کے لیے استعمال کیا جاتا ہے۔ مثال کے طور پر، card.getAttribute("data-category").split(",") فعال زمرہ جات کے ساتھ آسانی سے موازنہ کرنے کے لیے کوما سے الگ کردہ زمرہ کے سٹرنگ کو ایک صف میں تقسیم کرتا ہے۔ |
classList.add() | یہ طریقہ ایک عنصر میں ایک مخصوص کلاس کا اضافہ کرتا ہے۔ اس کا استعمال ان کارڈز کو چھپانے کے لیے غیر فعال کارڈ کی کلاس شامل کرنے کے لیے کیا جاتا ہے جو فعال فلٹرز سے میل نہیں کھاتے ہیں۔ مثال کے طور پر، card.classList.add("غیر فعال-کارڈ") کارڈ کو چھپا دیتا ہے جب اس کے زمرے منتخب کردہ سے مماثل نہیں ہوتے ہیں۔ |
trim() | trim() طریقہ سٹرنگ کے دونوں سروں سے وائٹ اسپیس کو ہٹانے کے لیے استعمال کیا جاتا ہے۔ اسکرپٹ میں، یہ اس بات کو یقینی بناتا ہے کہ بٹنوں کے زمرہ جات کا موازنہ پروڈکٹ ڈیٹا کے زمروں سے صاف طور پر کیا جائے۔ مثال کے طور پر، button.innerText.trim() اس بات کو یقینی بناتا ہے کہ اضافی خالی جگہوں پر غور نہیں کیا جائے گا۔ |
post() | بیک اینڈ اسکرپٹ میں، post() کا استعمال ایک ایسا روٹ بنانے کے لیے کیا جاتا ہے جو کلائنٹ کے ذریعے بھیجے گئے ڈیٹا کو قبول کرتا ہے (اس صورت میں، منتخب کیٹیگریز)۔ سرور سائیڈ اسکرپٹ منتخب زمروں کی بنیاد پر فلٹر شدہ پروڈکٹ ڈیٹا واپس کرنے کے لیے اس درخواست پر کارروائی کرتی ہے۔ |
json() | ایکسپریس میں یہ طریقہ کلائنٹ کو JSON جواب بھیجنے کے لیے استعمال کیا جاتا ہے۔ مثال کے طور پر، res.json(filteredProducts) وہ پروڈکٹس واپس کرتا ہے جو منتخب کردہ زمروں سے مماثل ہیں، جس سے کلائنٹ سائیڈ کو فلٹر شدہ پروڈکٹس ڈسپلے کرنے کی اجازت ملتی ہے۔ |
جاوا اسکرپٹ میں ملٹی کیٹیگری فلٹرنگ کو سمجھنا
اوپر فراہم کردہ اسکرپٹ متعدد زمروں پر مبنی آئٹمز کو متحرک طور پر فلٹر کرنے پر فوکس کرتی ہیں، جو کہ پروڈکٹ پر مبنی ویب سائٹس پر صارف کے تجربے کو بڑھانے کے لیے ضروری ہے۔ اس کا مقصد صارفین کو متعدد زمروں کو منتخب کرنے اور اس کے مطابق کارڈز کو فلٹر کرنے کی اجازت دینا ہے۔ یہ جاوا اسکرپٹ کا استعمال کرتے ہوئے بٹن کلکس کو کیپچر کرکے، منتخب کردہ زمروں کو ایک صف میں محفوظ کرکے، اور پھر صرف ان کارڈز کو ڈسپلے کرکے حاصل کیا جاتا ہے جو تمام منتخب زمروں سے مماثل ہوں۔ یہ عمل اس وقت شروع ہوتا ہے جب کوئی صارف زمرہ کے بٹن پر کلک کرتا ہے، جو اس بٹن کی فعال حالت کو ٹوگل کرتا ہے۔ بٹن کی قدر ایک صف میں محفوظ ہے، جو تمام فعال فلٹرز کی نمائندگی کرتی ہے۔
اس حل کا ایک اہم حصہ صف کا طریقہ استعمال کر رہا ہے۔ ہر(). یہ کمانڈ اس بات کو یقینی بناتی ہے کہ تمام منتخب کردہ زمروں کا کارڈ کے زمروں سے موازنہ کیا جائے۔ یہ چیک کرتا ہے کہ آیا ہر ایک فعال زمرہ کارڈ کے زمروں میں پایا جاتا ہے، اس طرح ملٹی کیٹیگری فلٹرنگ کو آسانی سے کام کرنے کی اجازت دیتا ہے۔ ایک اور اہم طریقہ ہے۔ تقسیم ()، جو ہر کارڈ سے زمرہ جات کی تار کو ایک صف میں توڑنے کے لیے استعمال ہوتا ہے۔ یہ JavaScript کو انفرادی زمروں کا موازنہ کرنے اور یہ تعین کرنے کے قابل بناتا ہے کہ کون سے کارڈ دکھائے جائیں یا چھپائے جائیں۔
اس کے علاوہ، سکرپٹ استعمال کرتا ہے classList.toggle() کلک کرنے پر بٹنوں پر فعال کلاس شامل کرنے یا ہٹانے کے لیے۔ یہ کلاس بصری تاثرات کے لیے بہت اہم ہے، کیونکہ یہ بتاتا ہے کہ کون سے بٹن فی الحال فعال ہیں۔ جب ایک بٹن غیر فعال ہو جاتا ہے، تو اس کا زمرہ فعال زمروں کی صف سے ہٹا دیا جاتا ہے، اور ڈسپلے کو اپ ڈیٹ کرنے کے لیے فلٹرنگ فنکشن دوبارہ شروع ہو جاتا ہے۔ ایسے کارڈز جو فعال زمروں سے میل نہیں کھاتے انہیں غیر فعال کے بطور نشان زد کرنے کے لیے ایک کلاس شامل کرکے چھپایا جاتا ہے۔ یہ طریقہ اس بات کو یقینی بناتا ہے کہ صارف متعدد فلٹرز کو منتخب یا غیر منتخب کر کے اپنی تلاش کو آسانی سے بہتر کر سکتے ہیں۔
بیک اینڈ اسکرپٹ کو Node.js اور Express کا استعمال کرتے ہوئے سرور سائیڈ پر پروڈکٹ فلٹرنگ کو سنبھالنے کے لیے بنایا گیا ہے۔ منتخب کردہ زمرہ جات سرور کو POST درخواست کے ذریعے بھیجے جاتے ہیں، اور سرور مصنوعات کو فلٹر کرکے اور صرف فعال زمروں سے مماثل آئٹمز واپس کرکے اس درخواست پر کارروائی کرتا ہے۔ سرور وہی منطق استعمال کرتا ہے جو فرنٹ اینڈ کو استعمال کرتا ہے۔ فلٹر () ہر پروڈکٹ کے زمرے کے ساتھ منتخب زمروں کا موازنہ کرنے کا طریقہ۔ یہ نقطہ نظر بڑے ڈیٹا سیٹس سے نمٹنے کے وقت مفید ہے، کیونکہ یہ کلائنٹ کی طرف سے پروسیسنگ کو آف لوڈ کرتا ہے، جس کے نتیجے میں اختتامی صارفین کے لیے بہتر کارکردگی ہوتی ہے۔
جاوا اسکرپٹ کا استعمال کرتے ہوئے ڈائنامک آئٹم فلٹرنگ: آپٹمائزڈ ملٹی کیٹیگری فلٹرنگ
ونیلا جاوا اسکرپٹ کا استعمال کرتے ہوئے فرنٹ اینڈ ڈیولپمنٹ اپروچ
// Define product data
let products = {
data: [
{ productName: "Fantasy", category: "Salmon, Shrimp" },
{ productName: "Spring", category: "Veggie" },
{ productName: "Rainbow", category: "Salmon, Tuna, Unagi" },
{ productName: "Unique", category: "Salmon, Tuna, Unagi, Shrimp" },
{ productName: "Perfection", category: "Salmon" },
]
};
// Handle button click event
let activeCategories = [];
document.querySelectorAll(".category-button").forEach(button => {
button.addEventListener("click", () => {
const category = button.innerText.trim();
button.classList.toggle("active-button");
if (button.classList.contains("active-button")) {
activeCategories.push(category);
} else {
activeCategories = activeCategories.filter(cat => cat !== category);
}
filterCards();
});
});
// Filter cards based on active categories
function filterCards() {
document.querySelectorAll(".card").forEach(card => {
const cardCategories = card.getAttribute("data-category").split(",");
const match = activeCategories.every(cat => cardCategories.includes(cat));
card.style.display = match ? "block" : "none";
});
}
متحرک آئٹم فلٹرنگ کے لیے بیک اینڈ پر عمل درآمد
Node.js اور Express کا استعمال کرتے ہوئے سرور سائیڈ اپروچ
const express = require('express');
const app = express();
app.use(express.json());
// Sample product data
const products = [
{ name: 'Fantasy', categories: ['Salmon', 'Shrimp'] },
{ name: 'Spring', categories: ['Veggie'] },
];
// Filter products API
app.post('/filter', (req, res) => {
const selectedCategories = req.body.categories;
const filteredProducts = products.filter(product =>
selectedCategories.every(cat => product.categories.includes(cat))
);
res.json(filteredProducts);
});
app.listen(3000, () => console.log('Server running on port 3000'));
ویب ڈویلپمنٹ میں ملٹی کیٹیگری فلٹرنگ کے لیے جدید تکنیک
میں ایک کثیر قسم کے فلٹرنگ سسٹم کو لاگو کرتے وقت جاوا اسکرپٹ، یہ ضروری ہے کہ نہ صرف UI کے تعامل پر غور کیا جائے بلکہ اس کی حمایت کرنے والے ڈیٹا ڈھانچے پر بھی غور کریں۔ متحرک مواد کے تناظر میں، ایک بہتر اور صاف کو برقرار رکھنے ڈوم ہیرا پھیری کی حکمت عملی کلیدی ہے۔ مثال کے طور پر، آپ ایک سے زیادہ زمرہ کے بٹنوں کو مؤثر طریقے سے ہینڈل کرنے کے لیے ایونٹ ڈیلی گیشن کی تکنیک استعمال کر سکتے ہیں، اس بات کو یقینی بناتے ہوئے کہ صرف مطلوبہ DOM عناصر کو ہیر پھیر کیا جائے۔
ایک پہلو جو فلٹرنگ کے تجربے کو مزید بڑھا سکتا ہے وہ ہے سادہ بٹنوں کی بجائے مزید نفیس UI عناصر، جیسے چیک باکسز یا ملٹی سلیکٹ ڈراپ ڈاؤنز شامل کرنا۔ یہ صارفین کو زیادہ دانے دار طریقے سے فلٹرز کے ساتھ تعامل کرنے کی اجازت دیتا ہے۔ مثال کے طور پر، ایک ڈراپ ڈاؤن جو ایک سے زیادہ انتخاب کی اجازت دیتا ہے، زمرہ جات کا انتخاب کرتے وقت صارفین کے لیے کلینر UI اور زیادہ لچک فراہم کرتا ہے۔ یہ اضافی جاوا اسکرپٹ منطق اور اسٹائل کے ساتھ لاگو کیا جا سکتا ہے، جبکہ ابھی بھی صف کے طریقوں کو استعمال کرتے ہوئے جیسے filter() اور every() زمرے کے مقابلے کے لیے۔
ایک اور اہم بات فلٹرنگ سسٹم کی کارکردگی ہے، خاص طور پر جب کسی بڑے ڈیٹاسیٹ سے نمٹنا ہو۔ جب آپ کے پاس فلٹر کرنے کے لیے سیکڑوں یا ہزاروں آئٹمز ہوں، تو DOM ہیرا پھیری کو زیادہ سے زیادہ کم کرنا بہت ضروری ہے۔ اس کو بہتر بنانے کا ایک طریقہ یہ ہے کہ DOM میں اپ ڈیٹس کو بیچ کر استعمال کریں۔ requestAnimationFrame() یا debounce() اپ ڈیٹس کی شرح کو کنٹرول کرنے اور صارف کے ہموار تجربے کو یقینی بنانے کے طریقے۔ یہ تکنیکیں نہ صرف کارکردگی کو بہتر کرتی ہیں بلکہ صفحہ کی ردعمل کو بھی بڑھاتی ہیں، جس سے یہ بڑے ڈیٹا سیٹس کے لیے زیادہ قابل توسیع ہے۔
جاوا اسکرپٹ میں ملٹی کیٹیگری فلٹرنگ کے بارے میں اکثر پوچھے گئے سوالات
- میں متعدد فعال فلٹرز کو کیسے ہینڈل کروں؟
- آپ فعال فلٹرز کو ایک صف میں محفوظ کر سکتے ہیں اور استعمال کر سکتے ہیں۔ every() چیک کرنے کے لیے کہ آیا ہر کارڈ کا زمرہ منتخب فلٹرز سے میل کھاتا ہے۔
- اگر میرے پاس اوور لیپنگ زمرے ہوں تو کیا ہوگا؟
- استعمال کرنا split() اور trim()، آپ زمرہ کے ڈیٹا کو الگ اور صاف کر سکتے ہیں، اس بات کو یقینی بناتے ہوئے کہ ہر زمرے کا فعال فلٹرز سے مناسب طریقے سے موازنہ کیا جائے۔
- میں بڑے ڈیٹاسیٹس کے لیے فلٹرنگ کو کیسے بہتر بنا سکتا ہوں؟
- بیچ DOM اپ ڈیٹس کا استعمال کرتے ہوئے requestAnimationFrame() یا لاگو کریں a debounce() کارکردگی کو بہتر بنانے، فلٹرنگ آپریشنز کی فریکوئنسی کو کم کرنے کے لیے فنکشن۔
- میں تمام منتخب زمروں سے مماثل اشیاء کو کیسے ڈسپلے کروں؟
- استعمال کریں۔ every() اس بات کو یقینی بنانے کے لیے کہ تمام منتخب کیٹیگریز کو مرئی بنانے سے پہلے ہر کارڈ کے ڈیٹا میں شامل کیا گیا ہے۔
- کارڈ سسٹم میں ٹوٹی ہوئی تصاویر کو سنبھالنے کا بہترین طریقہ کیا ہے؟
- ایک کو نافذ کریں۔ error ہر تصویر پر واقعہ سننے والا جب تصویر لوڈ ہونے میں ناکام ہو جائے تو اسے چھپانے یا تبدیل کرنے کے لیے، صارف کے تجربے کو بڑھاتا ہے۔
جاوا اسکرپٹ فلٹرنگ تکنیکوں پر حتمی خیالات
ویب صفحات میں کثیر زمرہ کی فلٹرنگ کو لاگو کرنے سے صارف کے تجربے کو نمایاں طور پر بہتر بنایا جا سکتا ہے، جس سے صارفین کے لیے بالکل وہی چیز تلاش کرنا آسان ہو جاتا ہے جس کی انہیں ضرورت ہے۔ کے محتاط استعمال کے ساتھ جاوا اسکرپٹ طریقوں جیسے ٹوگل() اور ہر()، ڈویلپرز ایک موثر، توسیع پذیر حل تشکیل دے سکتے ہیں جو بڑے ڈیٹاسیٹس کو آسانی سے ہینڈل کرتا ہے۔
مزید برآں، DOM ہیرا پھیری کو بہتر بنا کر اور غیر ضروری کارروائیوں کو کم کر کے، یہ نقطہ نظر صارف کے اعلیٰ تعامل کے باوجود کارکردگی کو یقینی بناتا ہے۔ اس فلٹرنگ سسٹم کو ای کامرس ویب سائٹس، پورٹ فولیوز، یا کسی ایسے صفحے میں ضم کیا جا سکتا ہے جس میں متعدد فلٹرز کی بنیاد پر متحرک مواد کی نمائش کی ضرورت ہو۔
ماخذ اور حوالہ سیکشن
- اس مضمون میں مواد اور کوڈ کی مثالیں Alena Chuyankova کی CodePen مثال سے متاثر ہیں۔ آپ یہاں اصل کوڈ کو دریافت کر سکتے ہیں: الینا کا کوڈ پین .
- جاوا اسکرپٹ سرنی کے طریقوں اور ایونٹ ہینڈلنگ کے بارے میں اضافی تصورات کا حوالہ آفیشل موزیلا ڈیولپر نیٹ ورک دستاویزات سے لیا گیا، یہاں قابل رسائی: MDN ویب دستاویزات .
- جاوا اسکرپٹ کا استعمال کرتے ہوئے DOM ہیرا پھیری اور کارکردگی کو بہتر بنانے کے بارے میں مزید بصیرت کے لیے، میں نے Smashing Magazine کی اس جامع گائیڈ کا حوالہ دیا: موثر DOM کو سمجھنا .