问题标签 [featuretoggle]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
928 浏览

c++ - 当工件是库并且标志影响 C 或 C++ 标头时,功能标志/切换

关于功能标志/切换以及为什么要使用它们存在很多讨论,但大多数关于实现它们的讨论都围绕(Web 或客户端)应用程序进行。如果您的产品/工件是 C 或 C++ 库,并且您的公共标头受到标志的影响,您将如何实现它们?

“天真”的做法并不真正奏效:

你不会想运送这样的东西。

  • 您发布的库是为特定功能标志组合构建的,客户端不需要#define相同的功能标志来使事情正常工作
  • 公共标头中的 ifdef 很难看
  • 最重要的是,如果您禁用标志,您不希望客户看到有关禁用功能的任何信息- 也许这是即将发生的事情,您不想在准备好之前展示您的东西

在文件上运行预处理器以获取用于分发的标头实际上并不起作用,因为这不仅会作用于功能标志,还会执行预处理器所做的所有其他事情。

没有这些缺陷的技术解决方案是什么?

0 投票
1 回答
2282 浏览

javascript - Passing .NET Core Environment to React.JS app

With .NET Core, in Startup.cs you have access to IHostingEnvironment from which you can get the EnvironmentName which corresponds to the value of the ASPNETCORE_ENVIRONMENT environment variable set on the server. This is great for toggling various features on/off as well as using env-specific configs. But with a front-end that is all React.JS, is there a way to pass this value down so that the front-end is aware of it's environment as well? I can think of some potential ways it might be done but they seem a little hacky. What are the best practices for this?

0 投票
3 回答
2352 浏览

azure - 使用 VSTS 和 Azure 时正确管理应用程序设置

如果您使用 VSTS 和 Azure,有两种不同的方式来管理应用程序设置。请记住,这只是用于持续部署的工具的一个示例。

您可以在 VSTS 的 CD 管道中覆盖 JSON 文件(旧系统中的 Web 配置),也可以覆盖 Azure“应用程序设置”部分中的设置。我只是在想应该在哪里管理什么设置?我的想法是在 Azure 应用程序设置部分管理依赖于第三方模块的设置,例如数据库(连接字符串)、外部服务(例如 Application Insights)。如果某些更改出现在第 3 方系统中,这可以让您灵活地快速更改某些设置。

仅取决于我将在 VSTS 中管理的应用程序的东西。功能切换呢?假设您有一个股票市场,并且您正在构建一个模块来管理称为 Blah 的新加密货币的买卖。在所有测试之后,您决定发布该功能并采用负责启用/禁用新功能的标志。在 Azure 的应用程序设置或 VSTS 的 CD 管道中,您会在哪里取消标记?

也许还有更多我没有提到的其他类型的设置,并且管理起来有问题?我问这个问题的主要原因是当应用程序增长时设置管理变得有问题,很容易导致配置文件混乱。请告诉我在 Web 应用程序中管理应用程序设置的正确方法是什么?

0 投票
3 回答
830 浏览

reactjs - 如何在 React 中按名称全局禁用/隐藏/替换组件?

我有一个大型 React 应用程序,我有一些组件我想从配置或全局级别完全禁用。在渲染任何组件之前,是否有任何我可以使用的全局钩子被调用?如果是这样,我想我可以检查组件的名称并返回null该名称是否在禁用列表中。你会怎么做?

0 投票
2 回答
2253 浏览

c# - 如何在运行时跳过单元测试?

提前致谢!

我们使用 selenium web 驱动程序进行了一些自动化测试,这些测试非常棒,并提供了一个非常好的回归包。

问题是现在我们的代码中有功能切换。所以我需要说忽略这些测试,除非该功能切换打开/关闭。我找不到任何真正搜索谷歌的东西。

理想情况下,我不想在功能测试的顶部使用“if”语句,但它看起来将成为主要方式。我最初的想法在哪里创建自定义属性

我有些需要挂钩到 MSTest 管道并说如果此属性存在并且 MyFeature1 的逻辑已关闭然后不运行此测试 - 看着动态添加 [Ignore] 但没有运气。

这是通过 VSTS 运行的,我可以使用 [TestCategories] 但我必须不断更新我不想做的打开/关闭功能的管道。

任何帮助或建议都会很棒!

0 投票
0 回答
40 浏览

javascript - 如何在云上运行的 JS webapps 上实现功能切换

我绝不是 JS 开发人员,但我想了解一下这方面的行业标准。

如果我想实现功能切换以显示,隐藏在由 express/nginx 托管的云上运行的 JS Web 应用程序(例如 Angular,但这应该没有区别)上的一些功能。我该如何实施它们?

天真的方法是只实现 feature_name => boolean 的大映射,如果要启用和禁用它,则需要将 boolean 标志更改为 true

我的问题是在一个场景中,您需要启用/禁用功能而不重建应用程序,假设您在一家大公司工作,允许更改配置,但很难进行新的部署。

在 Java 中,我们的功能切换可以被 env 变量覆盖,但是对于 Web 应用程序来说这似乎不是那么简单,所以我的问题是这样做的标准是什么。

0 投票
1 回答
59 浏览

spring - 我可以在 Bean 关闭功能时让 Spring 提供带有 null 的 @Autowired 构造函数吗?

我正在开发一个应该隐藏在FeatureToggleX. 作为其中的一部分,我需要添加一个新的依赖项b到我的SomeClass

当且仅当激活时,我使用自定义IfActive注释:ConditionalTheToggledDependencyFeatureToggleX

b = null关闭时如何使 Spring 临时接线FeatureToggleX

是否有一种干净的方法可以将通用解决方案插入到 Spring 的接线过程中,以检测IfActive组件并null在它们的位置提供 s?


  • 正如其他答案中所建议的那样,我考虑@Autowired(required = false)过 - 可能与重载SomeClass的构造函数结合使用 - 允许省略b,但这有副作用,它也使省略合法化a,这应该是一个错误。

  • 我可以提供 的替代虚拟IfInactive变体NewDependency,但这会使我的项目充满毫无价值的虚拟变量,我需要记住在移除切换开关时移除这些虚拟变量。

  • 同样,我可以构建 的两种变体SomeClass,一种具有,另一种NewDependency完全不知道,并根据切换在两者之间进行选择。但是,这对于较大的类是不切实际的,因为它复制了其他不受影响的功能。

0 投票
1 回答
772 浏览

java - 数据库驱动的功能切换

我想根据数据库值启用我的新功能。如果为特性设置了数据库值,则应启用新代码。否则它应该切换并流向旧代码。有没有办法在 Java/Spring 中实现这一点?我不想经常访问数据库。我想在请求开始时打一个电话。有这方面的例子吗?如果是这样,请告诉我。谢谢

0 投票
1 回答
308 浏览

branching-and-merging - LaunchDarkly:多平台功能标记和分支问题

查看 LaunchDarkly 以了解我们企业应用程序中的功能标记。

两个问题:

1) 我担心能否在我们的 Java 后端和 React 前端(其中 2 个)中有效地标记功能。人们使用哪些策略来适当地定义功能,以便在多个应用程序/平台上轻松管理它们?

2)您是否更换了大部分/全部 git / Bitbucket / ??使用功能标志和纯基于主干的开发分支工作流程?如果没有,您是否对现有的 git / Bitbucket 分支策略进行了重大更改?

0 投票
1 回答
180 浏览

javascript - 如何阻止整个 React UI?

什么是阻止 ui 的最佳方式,比方说订阅结束?订阅结束的通知来自后端。但那又如何呢?在每个组件中设置一个标志,无论它是否被渲染?通过 redux 管理它?将每个组件包装在获取订阅结束信息的 HOC 中?有图书馆吗?我查看了这个https://github.com/tdeekens/flopflip但这有点太多了。我不想要一个提供者,比如黑暗启动。

我有点无能为力,从来没有这样做过,感谢每一个手指点......