BonBonSlick
@BonBonSlick
Vanilla Full Stack Web Architector

Как лучше всего реализовать включение и отключение функционала?

У меня есть фичи, 1,2,3,4... однако они еще на стадии тестирования и я хочу их пока отключить и продакшене.
После того как пройдет тестирование, отладка и т.д. выложить на продакшен, однако, если что-то пойдет не так, иметь возможность выключить данный функционал и перекрыть к нему доступ. Скажем выдавать страничку что данная фича временно отключена. Быстренько все поправить, залить на стейдж, потом после тестов в продакшен, и изменить галочку выставив что фича включена. Как со светом в комнате.

Кто-то уже делал такое? Есть идеи как лучше?
  • Вопрос задан
  • 137 просмотров
Решения вопроса 2
rockon404
@rockon404
Frontend Developer
Все зависит от архитектуры вашего приложения, наличия фронтенд фреймворка и других условий.
Но в основе решения, по-хорошему, должна лежать система прав доступа или условий показа, настраиваемая через панель администратора.
На React я бы написал компонент PermissionChecker, который бы проверял ключи permission, записанные в шаблон html в window.__data. Пример twig:
<script>
window.__data = {
  permissions: {{ permissions|json_encode|raw }}
};
</script>


Массив роутов приложения:
export const routes = [
  {
    path: '/feature1',
    component: feature1,
    requiredPermissions: PERMISSIONS.FEATURE_1,
  },
  ...
]

Небольшие виджеты в коде:
render() {
  return(
    <Wrapper>
      ...
      <PermissionChecker
        requiredPermissions={PERMISSIONS.FEATURE_2}
      >
        <Feature2 />
      </PermissionChecker>
    </Wrapper>
  );
}


В реализации PermissionChecker идет проверка прав и либо возвращается компонентб либо null. То же самое в компоненте который отрисовывает маршруты.
С таким решением вам не придется компилить новый бандл в попыхах в случае ошибок, а фичи можно подключать и отключать через панель администратора. Причем экспериментальный функционал, можно при желании отдавать только определенному кругу пользователей. Тут уж как систему прав на сервере реализуете.
Ответ написан
yarkov
@yarkov
Vue.js Frontend Developer
По моему лучшее решение будет такое: не сливать в master, пока не протестировано.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@rPman
Когда то давно я реализовывал модульную система таким образом, чтобы один модуль - один подключаемый файл (в моем случае php), при подключении файл регистрировался где это необходимо, добавлял нужные пункты в меню и кнопки.

Соответственно простое отключение include полностью выключало функционал.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы