مجموعات متداخلة لجافا سكريبت

في أي موقع حديث (وفي المواقع القديمة) توجد هياكل متداخلة وتسلسل هرمي للكائنات وأشجار. المثال الأكثر شيوعًا هو الدليل.



اليوم ، يتم تطوير العديد من المشاريع باستخدام جافا سكريبت. كيف يتم تخزين هياكل الأشجار في هذه الحالة؟ هذا ما أود التحدث عنه.



الآن مهمتي هي وضع هيكل هرمي للكتالوج بناءً على معايير المنتج.



هناك العديد من الخوارزميات لتخزين الأشجار ، ومن أمثلة هذه الخوارزميات قائمة Adjacency و Matherialized Path و Nested Set و Closure Table.



إذا كان بإمكانك تقديم المزيد من النصائح ، فسيسعدني الاستماع والتعلم.



عندما كتبت ملحقات لـ Joomla ، استخدمت Nested Set كثيرًا. لقد التقيت بهذا النموذج لأول مرة في نظام إدارة المحتوى هذا. ولكن الآن تم تغيير المكدس وأصبح الآن جافا سكريبت. بقيت العادات ، والمواقع على جملة أيضا. من الضروري نقل البيانات إلى خدمات ومشاريع جديدة.



هناك الكثير من المعلومات حول المجموعات المتداخلة على الإنترنت ويمكنك دائمًا العثور عليها إذا كنت تريد ذلك ، ولكن مع ذلك ، يجب أن أقول بضع كلمات حول نموذج البيانات هذا.



تتمثل نقطة المجموعة المتداخلة في أن كل عقدة في التسلسل الهرمي بها مفتاح أيسر وزوج مفاتيح أيمن. اعتمادًا على قيمها ، يتم اجتياز الشجرة. الصفات الإيجابية للخوارزمية ، في رأيي ، هي سرعة أخذ عينات البيانات. لا يوجد تكرار في هذه الخوارزمية. في الوقت نفسه ، لتغيير بنية الشجرة وإضافة العقد وحذفها ونقلها ، من الضروري إعادة حساب جميع المفاتيح.



لاستخدام البيانات من مجموعة Nested Set في مشاريع Javascript ، تحتاج إلى وحدة نمطية يمكنها العمل مع هذا النموذج. بالبحث من



خلال npm ، وجدت وحدات كانت وظيفتها جلب البيانات من بنية المجموعات المتداخلة ، أي يجب أن تكون جميع المفاتيح قد تم لصقها بالفعل. كانت هناك حاجة لتعديل الهيكل ، لكنني لم أجد مثل هذه الفرصة.



هناك مشكلة أخرى وهي أنه في معظم الحالات يتم تخزين كل من البيانات والبنية الشجرية في كيان واحد ، ولكن في رأيي يكون فصل هذه الأشياء أكثر كفاءة.



وبالتالي ، يمكن أن تقع نفس الفئة (هذه الفئات) في الآباء المختلفين. سيسمح هذا للمستخدمين بالعثور على ما يبحثون عنه بشكل أسرع باستخدام تسلسل هرمي مدروس جيدًا.



على الرغم من أنه من وجهة نظر مُحسّنات محرّكات البحث ، ستكون هناك صفحتان بهما عناوين URL مختلفة ونفس المحتوى ، ولكن يمكن حل ذلك عن طريق الروابط الأساسية.



إذا لم يكن هذا صحيحًا ، أطلب من متخصصي تحسين محركات البحث (SEO) تصحيح لي.



في النهاية ، قررت كتابة وحدة ونشرها على موقع npmjs.com.



إذا كان مفيدًا لشخص ما ، فسأكون سعيدًا جدًا.



الآن أواصل العمل عليه وفي خطط لتنفيذ نقل العقدة عبر الشجرة.



هنا رابط إلى npm حيث يمكنك تنزيل الحزمة .



هنا رابط إلى جيثب حيث يمكنك تنزيل المصادر .



التوثيق هناك وهناك.



اي تعليق سيكون مرحب به.



نتمنى لكم مشاريع جيدة ومهام شيقة.



All Articles