Um Matcher na deco é uma função que retorna um booleano
Matcher | Casos de Uso Comuns | Sticky |
---|---|---|
Random Matcher | Testar A/B na página com 50% do tráfego | session |
Cron Matcher | Alterar uma página toda sexta-feira entre 10h e 11h | none |
Date Matcher | Criar a página da Black Friday/ Agendar banners para aparecerem em datas e horários específicos | none |
Device Matcher | Exibir uma página diferente com base no dispositivo do usuário | none |
matchers
, assim
como as seções e loaders. Vamos criar um novo matcher chamado MeuMatcher.ts
para ilustrar o processo.
A assinatura do nosso matcher seguirá a seguinte estrutura:
MeuMatcher
aceita props
como entrada, permitindo
que você passe quaisquer dados necessários para o matcher. Além disso, ela
recebe um objeto ctx
do tipo MatchContext
, que contém as informações da
solicitação. Você tem a flexibilidade de realizar as operações desejadas dentro
da função do matcher e retornar um valor booleano com base na avaliação.
Vamos dar uma olhada no exemplo MatchDate
da biblioteca do deco:
MatchDate
atua como um Matcher. Ela aceita props
como entrada, que inclui as propriedades start
e end
. A função avalia se a
data atual está dentro do intervalo de datas especificado. Se nenhum valor de
start
ou end
for fornecido, ele será considerado true
. A função
MatchDate
retorna um valor booleano com base na avaliação.
Os
Matchers também podem ter um comportamento “sticky”, o que é particularmente
útil para cenários de testes A/B. Para tornar um Matcher “sticky” na sessão do
usuário, você pode exportar uma constante chamada sticky
com o valor
"session"
, conforme mostrado abaixo:
MatchRandom
usando a funcionalidade
de sessão “sticky”:
MatchRandom
, a função matcher MatchRandom
aceita traffic
como
prop, representando a porcentagem de tráfego que deve corresponder à condição.
Ao gerar um número aleatório entre 0 e 1, a função determina se o valor gerado é
menor que a porcentagem traffic
especificada. O Matcher retorna true
ou
false
com base nessa avaliação.
Os Matchers oferecem grande flexibilidade para personalizar e estender a
funcionalidade do deco para atender às suas necessidades específicas. Com a
capacidade de criar Matchers personalizados, você pode integrar fontes de dados
externas, realizar cálculos complexos e implementar lógicas intrincadas para
determinar a segmentação do usuário e fornecer experiências personalizadas.