Di situs modern mana pun (dan di situs lama) ada struktur bersarang, hierarki objek, pohon. Contoh paling umum adalah direktori.
Saat ini banyak proyek sedang dikembangkan menggunakan Javascript. Bagaimana cara menyimpan struktur pohon dalam kasus ini? Inilah yang ingin saya bicarakan.
Sekarang tugas saya adalah menyusun struktur hierarki katalog berdasarkan parameter produk.
Ada berbagai macam algoritma untuk menyimpan pohon, dan contoh dari algoritma tersebut adalah Adjacency List, Matherialized Path, Nested Set, dan Closure Table.
Jika Anda dapat memberi nasihat lebih lanjut, saya akan senang mendengar dan belajar.
Saat menulis ekstensi untuk Joomla, saya sering menggunakan Nested Set. Di CMS inilah saya pertama kali bertemu model ini. Tetapi sekarang tumpukan telah berubah dan sekarang menjadi Javascript. Kebiasaan tetap ada, dan situs-situs di Joomla juga. Anda perlu mentransfer data ke layanan dan proyek baru.
Ada banyak informasi tentang Kumpulan Bersarang di Internet dan jika Anda mau, Anda selalu dapat menemukannya, namun demikian, saya harus mengatakan beberapa patah kata tentang model data ini.
Inti dari Nested Set adalah bahwa setiap node dalam hierarki memiliki kunci kiri dan pasangan kunci kanan. Bergantung pada nilainya, pohon itu dilintasi. Kualitas positif dari algoritme, menurut saya, adalah kecepatan pengambilan sampel data. Tidak ada rekursi dalam algoritma ini. Pada saat yang sama, untuk mengubah struktur pohon, menambah, menghapus, dan mentransfer node, semua kunci harus dihitung ulang.
Untuk menggunakan data dari Nested Set di proyek Javascript, Anda memerlukan modul yang dapat bekerja dengan model ini.
Mencari melalui npm, saya menemukan modul yang fungsinya untuk mengambil data dari struktur Nested Sets, mis. semua kunci seharusnya sudah ditempelkan. Ada kebutuhan untuk mengedit struktur, tetapi saya tidak menemukan kesempatan seperti itu.
Masalah lainnya adalah dalam banyak kasus, baik data dan struktur pohon disimpan dalam satu entitas, tetapi menurut saya jauh lebih efisien untuk memisahkan hal-hal ini.
Dengan demikian, satu kategori yang sama (kategori ini) dapat terletak pada orang tua yang berbeda. Ini akan memungkinkan pengguna menemukan apa yang mereka cari lebih cepat dengan hierarki yang dipikirkan dengan matang.
Meski dari segi SEO, akan ada dua halaman dengan URL berbeda dan konten yang sama, namun hal ini dapat diatasi dengan canonical link.
Jika ini tidak benar, saya meminta pakar SEO untuk mengoreksi saya.
Akhirnya, saya memutuskan untuk menulis modul dan mempublikasikannya di npmjs.com.
Jika bermanfaat bagi seseorang, saya akan sangat senang.
Sekarang saya terus mengerjakannya dan berencana untuk mengimplementasikan transfer node melalui pohon.
Berikut ini tautan ke npm tempat Anda dapat mengunduh paket .
Berikut ini tautan ke github tempat Anda dapat mengunduh sumbernya .
Dokumentasinya ada di sana dan di sana.
Setiap komentar akan diterima.
Kami berharap Anda mendapatkan proyek yang bagus dan tugas yang menarik.