@featureflip/browser

中文文档
2.19.1发布于 2026/11/10Apache-2.0TypeScriptESM + CJS零依赖近 30 天下载 3059

Featureflip 浏览器 SDK - 框架- 不可知特性旗客户端

中文使用文档
文档目录9 节
  1. 安装
  2. 快速启动
  3. API 参考
  4. FeatureflipClient.get(config)
  5. 配置选项
  6. 方法
  7. 启动
  8. 测试
  9. 许可证

@ 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

返回给定客户端密钥的客户端 。 第一个呼叫构建并注册一个共享核心;随后使用同一密钥的呼叫返回一个指向缓存核心的新手柄. 当一个密钥的最后一个手柄被关闭后,核心会关闭并被从缓存中取出.

配置选项

选项类型默认说明
clientKeystring(必须)来自您的工程设置的客户端 SDK 密钥
baseUrlstringhttps://eval.featureflip.io评价 API 基础 URL
contextRecord<string, unknown>{}初步评价背景(用户属性)
streamingbooleantrue为实时更新启用 SSE 流线
initTimeoutnumber10000初始评估请求超时( 以毫秒计)
bootstrapRecord<string, unknown> | 'localStorage'undefined在服务器首个响应前服务值 。 见 启动。 。 。 .
sendEvaluationEventsbooleantrue报告您的应用程序所读的标记 。 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

版本与发布记录

@featureflip/browser 共发布 33 个版本,首次发布于 2026/04/02;过去 12 个月发布了 33 个版本。

版本发布日期距今
2.19.1latest2026/11/104 天前
2.19.02026/11/086 天前
2.18.02026/10/3015 天前
2.17.22026/10/2817 天前
2.17.12026/10/2717 天前
2.17.02026/10/2718 天前

关于 @featureflip/browser 的常见问题

@featureflip/browser 是什么?

Featureflip 浏览器 SDK - 框架- 不可知特性旗客户端

如何安装 @featureflip/browser?

在项目目录运行 npm install @featureflip/browser,或使用 pnpm add / yarn add / bun add。

@featureflip/browser 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@featureflip/browser 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@featureflip/browser 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=20.19.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@featureflip/browser 可以商用吗?

@featureflip/browser 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@featureflip/browser 的下载量有多少?

根据 npm 官方下载统计,@featureflip/browser 在 2026/10/15 – 2026/11/13 这 30 天内被下载 3,059 次,日均约 102 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@featureflip/browser 还在维护吗?

最新版本 2.19.1 发布于 2026/11/10(4 天前);至今共发布 33 个版本,其中过去 12 个月发布了 33 个;首次发布于 2026/04/02。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。