@ featureflip/ 浏览器
用于评价的框架不可知浏览器 SDK 特性flip 特征标记.
安装
npm install @featureflip/browser
快速启动
import { FeatureflipClient } from '@featureflip/browser';
const client = FeatureflipClient.get({
clientKey: 'your-client-sdk-key',
});
await client.initialize();
const showBanner = client.boolVariation('show-banner', false);
单通由建筑.
FeatureflipClient.get()是获得客户的唯一方法——在v2.0中公共建筑师被移除. 通话get()不止一次都一样clientKey返回控件指向一个共享的下方客户端(重新计算)。 这使得框架绑定,React BureauMode双高架,每个组件构造都无害——它们都决心每个键一个SSE连接和一个旗下商店.
API 参考
FeatureflipClient.get(config)
FeatureflipClient.get(config: FeatureflipClientConfig): FeatureflipClient
返回给定客户端密钥的客户端 。 第一个呼叫构建并注册一个共享核心;随后使用同一密钥的呼叫返回一个指向缓存核心的新手柄. 当一个密钥的最后一个手柄被关闭后,核心会关闭并被从缓存中取出.
配置选项
| 选项 | 类型 | 默认 | 说明 |
|---|---|---|---|
clientKey | string | (必须) | 来自您的工程设置的客户端 SDK 密钥 |
baseUrl | string | https://eval.featureflip.io | 评价 API 基础 URL |
context | Record<string, unknown> | {} | 初步评价背景(用户属性) |
streaming | boolean | true | 为实时更新启用 SSE 流线 |
initTimeout | number | 10000 | 初始评估请求超时( 以毫秒计) |
bootstrap | Record<string, unknown> | 'localStorage' | undefined | 在服务器首个响应前服务值 。 见 启动。 。 。 . |
sendEvaluationEvents | boolean | true | 报告您的应用程序所读的标记 。 Featureflip 使用这个来告诉一面旗帜, 您的代码仍然从它只发送的一面读取, 这就是让一个未使用的客户端的旗帜存档的原因 。 只读取 flagDetail() 键 *Variation 方法数。 设定 false 无法报告 —— 特性flip 然后将它发给这个客户端的每面旗帜视为在使用中 . |
方法
initialize(options?: { waitForServer?: boolean }): Promise<void>
从服务器获取全部旗下值。 在读取变量前必须先调用( 除非客户端被拖出) 。 如果 streaming 已启用。 带有拖曳值, 当获取在背景中运行时立即解析; 通过 { waitForServer: true } 以等待第一个服务器响应.
flagSource: 'none' | 'bootstrap' | 'localStorage' | 'server'
目前服务的价值来自何处.
boolVariation(key: string, defaultValue: boolean): boolean
返回布尔旗值,或 defaultValue 如果国旗缺失或没有布尔.
stringVariation(key: string, defaultValue: string): string
返回字符串旗帜值,或 defaultValue 如果国旗缺少或没有字符串.
numberVariation(key: string, defaultValue: number): number
返回数字标记值,或 defaultValue 如果国旗缺少或没有数字.
jsonVariation<T>(key: string, defaultValue: T): T
返回所投放的旗帜值 T,或 defaultValue 如果国旗不见了.
identify(context: Record<string, unknown>): Promise<void>
重新评价所有带有新上下文的旗帜(如登录后). 输出 change 用于任何价值观发生变化的旗帜的事件.
await client.identify({ user_id: '123', plan: 'pro' });
on(event: EventType, handler: EventHandler): void
订阅事件.
'ready'-- 开出一次, 当客户端首次有值需要服务时( 收到){ source },数值与flagSource(中文(简体) )'change'-- 当旗帜值改变时被发射(收到a)FlagChanges对象)'error'-- 在流出或网络出错时开火
client.on('change', (changes) => {
console.log('Flags changed:', changes);
});
off(event: EventType, handler: EventHandler): void
不订阅事件.
close(): void
减少对共享核心的重计。 当给定客户端密钥的最后一个手柄被关闭后,共享核心会关闭SSE连接并自去除工厂缓存. 在同一把把柄上的双关是无线的.
启动
过 bootstrap 所以第一个颜料不会在网络上等待:
- 一个对象 联 合 国
{ flagKey: value },通常由服务器 SDK 在渲染页面并嵌入到 HTML 中时进行评估。 客户端立即初始化,并在您第一次阅读前不提出任何请求. 'localStorage':客户端保存它收到的每个客户端密钥和上下文的值(由散列所命名的五个最近上下文不存储),并在下一个页面负载上为它们服务. 对一种语境的价值观从不为另一种语境服务。 服务器 SDK 密钥被忽略 .
无论哪种方式,客户端仍然像往常一样取来和流出. 服务器的值替换了靴子并释放 change 对于任何不同的.
const client = FeatureflipClient.get({
clientKey: 'your-client-sdk-key',
context: window.__FLAG_CONTEXT__, // the same context the server evaluated with
bootstrap: window.__FLAGS__,
});
对于服务器侧渲染, FeatureflipClient.forServerRender(config) 返回服务客户端 bootstrap 对象的值,不提出网络请求,也不被缓存,因此对不同用户同时提出的请求从不共享.
全向导 : Bootstrap 客户端旗帜。 。 。 .
测试
使用 FeatureflipClient.forTesting() 创建具有预定旗帜值的客户端 -- -- 没有网络呼叫.
const client = FeatureflipClient.forTesting({
'show-banner': true,
'button-color': 'blue',
});
client.boolVariation('show-banner', false); // true
client.stringVariation('button-color', 'red'); // 'blue'
许可证
阿帕奇 - 2.0