October 31, 2022

Производительность приложений на 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", в который добавим записи:

  • Contacts
  • Projects
  • Company Settings

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:

Надеюсь, статья изложена доступным языком. Если нет — пишите вопросы в личные сообщения или в комментариях к статье. Постараюсь ответить.


→ Подписывайтесь на мой канал в Телеграме Иван Некодит.

В канале рассказываю про:

  • Путь разработчика
  • Разработку на Nocode-инструментах.