节点.js 的特性查看器 OpenFeature 提供者
在Node.js中通过OpenFeature服务器SDK使用特写.
安装
npm install @featurevisor/openfeature-provider-node @openfeature/server-sdk
使用量
import { OpenFeature } from '@openfeature/server-sdk'
import { FeaturevisorOpenFeatureProvider } from '@featurevisor/openfeature-provider-node'
const provider = new FeaturevisorOpenFeatureProvider({ datafile })
await OpenFeature.setProviderAndWait(provider)
const client = OpenFeature.getClient()
const enabled = await client.getBooleanValue('checkout', false, {
targetingKey: 'user-123',
country: 'nl',
})
OpenFeature 特性评价的密钥映射 :
| 密钥 | 评价 |
|---|---|
checkout | 旗帜 |
checkout:variation | 变量 |
checkout:title | 变量名称 title |
variable:supportEmail | 全局变量命名 supportEmail |
使用匹配特性值类型的解析器 。 布尔变量使用带有后缀密钥的布尔解析器. 矩阵,对象,和JSON变量使用对象解析器.
提供者映射 OpenFeature targetingKey 到特性 userId 默认。 配置 targetingKeyField, (中文(简体) ), keySeparator, (中文(简体) ), variationKey,或 globalVariablePrefix 当您的项目需要不同的名称时。 全局变量前缀默认为 variable。 。 。 .
提供者区分省略 targetingKey 从一个明显的空字符串。 OpenFeature 服务器客户端通过,所以 { targetingKey: '', userId: 'old' } 地图 userId 转到空字符串。 如果没有提供目标密钥,则存在 userId 被保存下来。 无型号的JavaScript呼叫器也可以提供限定数字瞄准键,包括 0· ; NaN 并且无穷无尽不会凌驾于现有的字段之上.
特征实例
提供者可以创建和拥有一个特异功能实例,也可以重新使用由您的应用程序创建的特异功能实例.
让提供者创建实例
向提供者传递普通特性选项 :
const provider = new FeaturevisorOpenFeatureProvider({
datafile,
modules,
onDiagnostic,
})
提供者将创建的实例曝光为 provider.featurevisor。您可以将其用于数据文件更新、事件、诊断和其他功能化API。 OpenFeature关闭提供者后,提供者会关闭此实例并释放其资源.
重用已有实例
通过一个创建于 createFeaturevisor() 使用 featurevisor 选项 :
import { OpenFeature } from '@openfeature/server-sdk'
import { createFeaturevisor } from '@featurevisor/sdk'
import { FeaturevisorOpenFeatureProvider } from '@featurevisor/openfeature-provider-node'
const featurevisor = createFeaturevisor({ datafile })
const provider = new FeaturevisorOpenFeatureProvider({ featurevisor })
await OpenFeature.setProviderAndWait(provider)
同一实例与 provider.featurevisor评估、数据文件更新、模块、诊断和事件继续使用这一实例.
无效的初始数据文件拒绝 setProviderAndWait 与 PARSE_ERROR无论诊断记录水平如何 在提供有效数据文件之前,提供者仍然处于错误状态。 错误的更新会发出错误事件并解析到 OpenFeature 默认值 PARSE_ERROR。一个有效的更新可以恢复准备状态,包括当它恢复先前接受的数据文件时.
你的申请中仍然有这样的例子 关闭"OpenFeature"供应商不会关闭,所以其他消费者可以继续使用. 打电话 featurevisor.close() 当每个消费者都结束了.
若为 featurevisor 和特性构建选项,例如 datafile 或者说 modules 同时提供,现有实例优先,施工选项被忽略。 提供者选项,例如 targetingKeyField, (中文(简体) ), keySeparator, (中文(简体) ), variationKey, (中文(简体) ), globalVariablePrefix,以及 onTrack 仍然适用.
见 OpenFeature 文档 原因、错误、元数据、跟踪、生命周期和其他语言提供者.
许可证
麻省理工学院 法哈德·海拉尔