Давно не обновлял блок друзей , он как-то совсем выпал из внимания.
Главная проблема, которая меня всё это время беспокоила, это постоянные задержки, подёргивания и подгрузка элементов. Постоянные обращения к серверу , не самое лучшее решение.
Гораздо эффективнее заранее загружать данные и хранить их в кэше, а затем незаметно проверять обновления в фоне. Если какие-то данные изменяются, обновление происходит мгновенно и без визуальных задержек.
В итоге получилась полностью переработанная версия: изменена логика работы, улучшена производительность и добавлены новые функции.
Перед тем как перейти к обновлениям, стоит немного вспомнить старые версии этого модуля друзей.
Ранее он работал достаточно просто, но со временем начал терять актуальность
Пустой блок друзей стал более информативным: добавлена иконка и описание, чтобы при отсутствии друзей пользователь сразу понимал ситуацию. Теперь отображается сообщение о том, что друзей нет и их можно добавить.
Также добавлена кнопка «Найти друзей». При нажатии она открывает список пользователей. В дальнейшем планируется полноценная страница со списком пользователей, аналогичная тому, как это реализовано во ВКонтакте, где также будет возможность добавлять друзей.
В целом задумка достаточно масштабная. Для её реализации потребуется немало времени, особенно учитывая, что не всё получается идеально с первого раза. По ходу разработки приходится постоянно улучшать и дорабатывать уже сделанные части, что тоже влияет на сроки.
Следующие изменения касаются всплывающего окна. Были немного переработаны CSS-стили и изменено расположение некоторых элементов для более удобного отображения.
Также добавлена функция удаления друга из списка. Это действительно важная функция, однако для её корректной работы потребуется повышение прав пользователей, чтобы они могли удалять свои записи в каталоге файлов. Именно там наш скрипт и создаёт записи друзей, отправляя соответствующие данные в виде отчётности.
Кроме того, добавлена дополнительная плашка внизу «Показать всех друзей →». Она предназначена для тех случаев, когда пользователь не сразу догадывается, что достаточно нажать на счётчик друзей, чтобы открыть всплывающее окно.
Остались, конечно, ещё нерешённые проблемы. Например, хотелось бы добиться такого же поведения, как в модуле фотографий — чтобы блок друзей отображался мгновенно, без морганий и задержек.
Почти всё уже кэшируется в браузере, данные сохраняются, и логика переписывалась множество раз, но достичь идеального результата пока не удалось. Возможно, со временем получится улучшить эту систему, но на данный момент она остаётся в текущем виде.
Также пока не получается нормально упаковать скрипт в минифицированный JS. При сжатии часть заложенного функционала почему-то теряется, что выглядит как довольно странная аномалия и требует дополнительного изучения.
/* ========================= ЗАГРУЗКА ДАННЫХ С СЕРВЕРА ========================= */ function loadFriends(){ $.get(`/blog/0-0-1-0-17-${USER_ID}`, html => {