这个问题不在于如何实际编写这样的功能标志本身。但主要是寻求有关此类系统的建议或提示。
这个想法很简单:
为了逐步推出/推出功能,我们需要分叉行为。
为此,我们创建一个包含字符串数组的
featureDescriptionFlag
对象。如果存在则返回true
,否则返回false
但是,还必须考虑:
false
,因为没有翻转已触发我正在引用功能标志,这里描述的概念:
我对实施的主要关注如下:
featureDescriptionFlag
,然后下一次调用返回false)这是我提出的第一个实现(see also on jsfiddle):
// WARNING: Requires underscore.js
function featureFlag(flagContainerName, elementKeyToCheck) {
//console.log('Feature flagging on '+flagContainerName+', with ' + elementKeyToCheck); // DEBUG
if (_.has(window.featureFlagDescriptor||{}, flagContainerName)) {
if(_.contains(window.featureFlagDescriptor[flagContainerName]||[], elementKeyToCheck)) {
//console.log('Disabled by '+flagContainerName+', matching ' + elementKeyToCheck); // DEBUG
return true;
}
}
return false;
}
然后,我们创建全局
的标志描述对象window.featureFlagDescriptor = {someFunction: ['example']};
我担心的是,允许这样的翻转可能是危险的,我在脑海中警告如何利用它。
后来,在一个必须有两个行为的函数中,我们这样做:
function someFunction(){
// Code...
if(featureFlag('someFunction', 'example')) {
// Work only if flag exist
} else {
// Former behavior
}
}
任何建议,改进建议?
我有 created a jsfiddle on the subject ,最终会制作完整的工作样本。