Приветствую всех читателей и тех, кому интересна тема Ucoz.
Как вы уже, наверное, поняли, эта платформа действительно сложная и непростая , можно даже сказать, древняя и своеобразная. Ucoz требует особого подхода: здесь нельзя просто «тыкать кнопки» и надеяться, что всё само заработает.
Если ты хочешь создать что-то вроде модулей, системы подарков или друзей, то одного желания и базовых знаний недостаточно. Здесь нужно быть не просто задротом, который умеет жать на клавиши, а человеком, который умеет мыслить нестандартно, глубже копать и понимать, как всё устроено под капотом.
Потому что наша цель , не просто что-то слепить на коленке, а реально сделать лучше и функциональнее.
Ну что, погнали разбирать всё по порядку…
Что было сделано: основная проблема заключалась в парсинге подарков.
Ситуация была такая, если два разных пользователя отправляли одинаковые подарки (например, одну и ту же картинку), скрипт не понимал, что это разные события. Он видел одинаковые изображения и автоматически объединял их в одно как будто подарок пришёл от одного пользователя.
И вот это была реальная головная боль. Долго время я не мог это нормально пофиксить , ну не работало и всё, хоть тресни. Проблема была в том, что JavaScript понимает только чётко заданную логику, а объяснить ему «по-человечески», как нужно различать такие случаи, бывает довольно сложно.
В итоге стало понятно: нужно не просто чинить баг, а постоянно улучшать саму логику парсинга. Делать её более гибкой, учитывать больше условий, чтобы система различала не только картинку подарка, но и контекст , кто отправил, когда, в каком порядке и т.д.
Разница между старым и новым скриптом тут довольно серьёзная , это не просто фикс, а эволюция системы.
Теперь это выглядит как мини VK-лента, а не список div’ов
АРХИТЕКТУРА (самое важное)
Старый:
1. всё в одной логике
2. функции перемешаны
3. сложно расширять
4. трудно дебажить
Новый:
Разделено на блоки:
1. CONFIG
2. CACHE SYSTEM
3. STATE
4. PARSERS
5. LOADING
6. UI RENDER
7. POPUP
8. INIT
Это уже нормальная структура кода
УМНАЯ ЛОГИКА (главное улучшение)
Самое важное улучшение:
теперь скрипт:
1.различает подарки не по картинке
2. а по контексту + пользователю + времени + структуре данных
То есть проблема:
1. одинаковые картинки = один подарок
2. почти полностью уничтожена архитектурно.
ПРОИЗВОДИТЕЛЬНОСТЬ
Было:
1. много повторных fetch
2. слабый кеш
3. тяжёлый DOM parsing
Стало:
1. кеш localStorage
2. минимизация повторных запросов
3. параллельная обработка
4. сортировка через precomputed _ts
Итог:
быстрее, легче, стабильнее
КРАТКИЙ ВЫВОД
Старый скрипт:
работает, но как может
Новый скрипт:
работает как система, а не костыль
Если по-простому:
Было
скрипт который парсит подарки
Сделал:
мини движок подарков с кешем, UI и оптимизацией
Почти максимум уже выжат из того, что вообще можно было реализовать в этих условиях. Единственное, чего реально не хватает , это функции удаления подарков для каждого пользователя. Сейчас редактирование и удаление доступны только админам, и это серьёзный минус всей системы.
Сама система, по сути, остаётся недоразвитой, но с моей стороны было сделано всё возможное из того, что вообще позволяла платформа и её ограничения. Я действительно выжал из неё максимум.
Но на этом я не останавливаюсь , буду продолжать дорабатывать систему дальше. Если не получится улучшать сам скрипт, то займусь дизайном: либо всплывающим окном, либо самим блоком подарков, чтобы сделать интерфейс более современным и удобным.