Производительность приложений на Bubble. Заметки. Часть 13. Option sets (OS).
Данная серия статей — это мои заметки по книге The Ultimate Guide to Bubble Performance. Тут изложено только то, что фиксировал я, т.к. посчитал это важным.
Option sets как и БД хранят информацию, только у них есть некоторые нюансы:
- OS загружаются сразу все, которые есть, при загрузке любой страницы приложения, в отличие от БД, которая отдаёт нам только запрашиваемую инфу
- OS загружаются быстрее, чем любая информация из БД
- OS можно изменить только через интерфейс Bubble
Креативное использование Option sets
Замена БД на Option sets для быстрой загрузки
Это не лучшая практика. Пишу для общего развития.
Автор книги поведал о своем опыте:
Делал e-commerce проект. Ему нужно было увеличить скорость загрузки страниц, поэтому он перенес часть БД в OS. Все Products, которые хранились в БД, дублировались в OS.
Такой подход позволил уменьшить загрузку страницы на 2 секунды.
Меню приложения и привелегии пользователя
Если нужно построить меню в приложении и ограничить показ пунктов разным ролям пользователей, можно использовать OS:
Например, нужно показывать пункты меню только залогиненному пользователю.
1. Создадим OS "OS Privileges", в который добавим записи:
2. Добавим в сущность User поле Privileges с типом данных OS Privileges (list)
При регистрации пользователя добавляем ему список "Привелегий":
Выводим эти пункты в нашем меню, которое является RG, как Current User's Privileges
- Если пользователь незалогинен, то у него не будет меню, потому что список привелегий пустой
- Если пользователь залогинен, то у него будут доступны те привелегии, которые сохранены у него в списке
- Если админ захочет запретить юзеру доступ к каким-то пунктами меню, то он просто уберёт у определенного пользователя эти пункты из списка "Privileges"
OS для попапа
Представим, что нужно выводить в попапе сообщения-вопросы: о выходе пользователя, об удалении пользователя, сообщение о сбросе пароля и т.д.
Тут можно поступить разными способами: создать несколько попапов, создать один попап и обложить каждый элемент условиями (показывать такой-то текст, если то-то, показывать такую кнопку, если то-то и т.д.) или сделать как предлагает автор.
Автор предлагает закинуть все возможные сообщения в OS Message Settings.
Ниже пример для сообщения "Log out", созданного таким образом:
Для начала нужно в попапе установить тип данных OS Message Settings.
При нажатии на кнопку "Log out", передать через Display data данные, которые нужно отобразить в popup.
В попапе выводим текст из OS, переданного через Display data:
И последний момент: настраиваем workflow, чтобы при нажатии на кнопку внутри попапа запускалось нужное событие.
Делаем через trigger, custom event и условие в only when:
Надеюсь, статья изложена доступным языком. Если нет — пишите вопросы в личные сообщения или в комментариях к статье. Постараюсь ответить.
→ Подписывайтесь на мой канал в Телеграме Иван Некодит.