JavaScript Client SDK
Установка SDK
- Script
- NPM
- Yarn
<script src="https://api.expf.ru/sigma.min.js"></script>
npm install expf-sigma.js
yarn add expf-sigma.js
Инициализация SDK
После установки вам нужно будет инициализировать SDK с помощью токена.
Токены предназначены для встраивания SDK в приложения. При необходимости вы можете отменить или создать новые проекты для SDK.
import Sigma from expf-sigma.js;
const token = <TOKEN>;
const sigma = new Sigma();
Создание экземпляра класса Sigma
Создайте экземпляра класса Sigma
, используйте метод init
для инициализации sigma
и передайте токен.
import Sigma from expf-sigma.js;
const token = <TOKEN>;
const sigma = new Sigma();
sigma.init({ token });
userData
userData – объект с пользовательскими данными. SDK целиком и полностью полагаются на предоставленные данные (методы по раздаче эксперимента, фича флагов и т.п.). Подробнее...
При инициализации SDK следует предоставлять объект userData и передавать как можно больше данных, чтобы воспользоваться преимуществами расширенных условий и конфигурации (например, проверки на уровне страны или ОС/браузера).
Расчет соли и прочего происходит по полю, указанному в split_by.
const userData = {
userId: 'userId', // например, clientId из счетчика google analytics
profileId: 'profileId', // например, ID пользователя при регистрации
deviceId: 'deviceId', // например, ID устройства с которого зашел пользователь
email: 'example@mail.ru',
deviceCategory: 'mobile',
custom: {
new_user: true,
level: 2
}
}
sigma.init({ token, userData })
В процессе взаимодействия с приложением можно легко изменять или удалять свойства
userData
без необходимости дополнительной инициализации Sigma
.
- Метод
editUserProperties()
позволяет изменять или удалять свойстваuserData
. Этот метод содержит цепочку вызовов, в которой необходимо вызывать следующий метод для выполнения операций над свойствамиuserData
. Подробнее > - Метод
editUserProperties()
позволяет удалить часть свойствuserData
. Подробнее >
cacheTTL
cacheTTL - третий необязательный параметр. Number
.
Метка времени (по умолчанию 10 секунд), указывает через какой промежуток времени обновить данные. Измеряется в секундах. Меньше 10 поставить нельзя, если указать число меньше 10, значение будет взято по умолчанию.
Пример:
const cacheTTL: number = 60;
sigma.init({ token, userData, cacheTTL })
Работа с фича флагами
Метод checkFlag(...)
принимает обязательный, строковый парамет р - название 'фича-флага'
. Он используется для проверки наличия определенной фичи в конфигурации экспериментов.
Если в конфигурации существует эксперимент с таким же названием 'фича-флага'
,
метод проверит условия эксперимента, назначит группу и вернет значение условия (или значение группы по умолчанию) эксперимента.
Если эксперимент с таким названием не найден в конфигурации, или пользователь не попал в условия эксперимента
но переданное название 'фича-флага'
существует, метод вернет значение условия 'фича-флага'
(или значение 'фича-флага'
по умолчанию).
Если в конфигурации не найден фича флаг с переданным параметром, метод вернет null
.
Пример:
/**
* @param {string} flagName
*/
const feature = await sigma.checkFlag('flagName'); // string | boolean | number | null
Работа с экспериментами
Метод getExperiment(...)
принимает обязательный строковый параметр — идентификатор эксперимента.
Он проверяет наличие эксперимента и условия участия пользователя в эксперименте.
При выполнении условий пользователь будет назначен в группу эксперимента.
Чтобы получить результат, в зависимости от типа эксперимента, нужно передать одно из свойств интерфейса:
- getParamValue(...)
- getFeatureValue(...)
- groupIndex
Пример, получить информацию об эксперименте с типом фича флаг:
/**
* @param {string} exp_id
* @param {string} ff_name
*/
const experiment = await sigma.getExperiment('exp_id');
const feature = experiment.getFeatureValue('ff_name'); // number | string | boolean | null