问题标签 [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 投票
2 回答
2471 浏览

java - 功能修改数据库时是否可以使用功能标志/切换?

在考虑在应用程序中使用功能切换时,这个问题最让我困惑。大多数功能都需要对数据库进行一些更改。那么如何实现功能标志以在打开/关闭功能切换的同时顺利恢复数据库更改?特别是当使用某些数据库迁移工具时,例如 flyway 或 liquibase。

让我们举个例子。例如,我有带有 Id、Name 列的简单表播放列表。我想在应用程序中添加向播放列表添加描述的功能。数据库表需要更改。已添加新列。列值不是强制性的。到目前为止很简单。一段时间后,功能将从生产中关闭。解决方案非常简单但很混乱——我们可以将列保留在 db 中,不再在代码中使用它。迁移工具以增量方式工作,因此当我关闭功能切换(或者我错了吗?)时,我看不到任何返回到以前的数据库状态的选项。更难的例子是当字段需要是强制性的。然后我不能只将该字段留在数据库中。它将向后不兼容。那是什么?如何处理这种情况?我认为这是很常见的情况。

此外,即使对 db 稍作更改,我的该类的应用程序模型也会发生变化。(假设使用了一些 ORM)。这不像用策略模式替换实现那么容易。除非您为 ORM 模型的使用提供大量抽象。所以添加这样一个特征标志似乎很复杂。谁能帮我理解一下如何使用功能工具?或者也许有人有完整的例子来展示?首选Java

0 投票
1 回答
38 浏览

javascript - 在 Javascript 中构建相互依赖的功能标志

我对功能标志相当陌生。他们非常有帮助。我使用它们来发布功能,但我也使用它们来测试应用程序中的功能。

我遇到的问题是某些功能依赖于其他功能。例如,我有一个入职模块。如果我关闭个人资料页面模块,它将破坏入职模块,因为部分入职体验涉及对个人资料页面的介绍。人为的例子,但你明白了。某些功能依赖于其他功能。如果我关闭个人资料页面模块,我希望它自动关闭所有连接的功能。所以我永远不会处于个人资料页面模块关闭而入职模块打开的状态。

我假设我不是第一个遇到这个问题的人。在我为这个问题制定自己的自定义解决方案之前,我想知道是否有处理这个问题的标准方法?谁能指出我正确的方向?任何帮助或建议表示赞赏。

0 投票
1 回答
995 浏览

rest - 当端点被功能标志/功能切换禁用时,您使用什么 HTTP 状态代码?

我一直在使用503 Service Unavailable或 down 进行维护。

然而,一些 http 客户端库,即 axios 将 503 视为可重试错误。

如果响应是由于高负载而产生的,那么重试它是有意义的,但 503 也适合功能切换的情况。

对人们使用的其他代码有什么建议吗?

0 投票
0 回答
357 浏览

node.js - 如何以及在何处为 asp.net 和 node.js angular typescript 应用程序添加 unleash-client

我正在尝试将https://github.com/Unleash/unleash-client-node添加到节点 js 角度项目。我不是开发人员,但只想在我的一个项目中集成功能切换。应用程序技术堆栈包含 asp.net 核心、nodejs、角度和类型脚本。配置释放客户端的确切位置(文件)是什么,以便我可以在服务器中看到应用程序。由于我幼稚的编码技巧,我尝试了很多方法,但都以失败告终。有些人可以提供有关集成的更多详细信息。

0 投票
2 回答
1133 浏览

azure - 在 Azure Functions 中使用 Azure 应用程序配置的功能标志

我正在探索 Azure Function's Http Trigger 中 Azure App Configuration 的以下 2 个功能

  1. 外部化应用程序设置
  2. 功能标志

下面是我如何获得配置的参考

在此处输入图像描述

因此,当我使用 _configuration["SomeAppSettingKey"] 时,我能够检索该值。所以,我能够实现上面提到的#1 功能。

我的问题是,我们如何检索功能标志信息?我尝试了以下方法。

在此处输入图像描述

如果有人可以帮助我了解如何在 Azure Functions 中检索它(我正在使用 V3),我将不胜感激?示例代码或对文档的任何参考都会有所帮助。

谢谢。

Update1:​​我可以反序列化 json 内容,如下所示。但是,这是正确的方法吗?

在此处输入图像描述

其中 FeatureManager 是我定义的一个类,如下所示。

在此处输入图像描述

0 投票
1 回答
417 浏览

django - 如何在 Django REST 框架中动态显示切换 URL

我正在做一个项目,我们使用功能切换来隐藏功能,直到它们准备好发布。

我们遵循的模式是,如果功能切换关闭,则根本不路由某些端点。即在 中,如果切换打开urls.py,我们仅在中包含 URL 。urlconf但这意味着功能切换只有在服务器重新启动时才会生效。我们希望能够在正在运行的服务器上动态打开和关闭功能切换。似乎urlconf仅在启动时解析,因此如果不重新启动,则不会反映对它的更改。

我已经尝试制作一个中间件来根据功能切换的值阻止某些 URL,它可以工作但不能很好地与Swagger文档一起使用,我也想反映功能切换的状态。

总的来说,感觉就像我在与系统作斗争,这通常表明我没有从正确的角度接近它。

那么,人们如何建议我在 Django 中实现行为的动态功能切换?

编辑:我的意思是说我看过一些帖子,比如这个:Django dynamic urlpatterns但实际上并没有任何解决方案。

一些更老的帖子谈到urlconf通过重新加载模块来强制刷新,我已经尝试过了,但是虽然我可以看到代码再次执行,但它似乎不会影响 URL。就好像它们正在被缓存,但我找不到任何清除缓存的方法(我在该主题上找到的所有帖子都已过时)

0 投票
2 回答
2207 浏览

javascript - VueJS 中的功能切换

我想在我的 Vue 应用程序中添加一些“功能切换机制”。虽然我已经实现了一个相当基本的设置,但我想考虑一下Pete Hodgson 在这篇文章中描述的技术。尤其是“决策反转”方面看起来很有意义,但我正在努力了解如何使其适应我的 Vue 应用程序。

这就是我到目前为止所拥有的。

配置.js

然后在例如一个组件中,我像这样切换可见性:

虽然这是一个非常基本的示例,但我可以想象功能切换可能会变得更加复杂,难以像这样处理。

如何应用所描述的功能切换技术?

0 投票
0 回答
43 浏览

spring - 在运行时 Spring Boot 上更改对静态 Web 资源的访问

我在我的项目中使用 Spring Boot 和 Spring Security 来管理静态 Web 资源的交付。到目前为止,我的应用程序通过 Spring Security 识别用户并允许他们访问这些资源就足够了。随后,我通过功能标志 ( https://www.togglz.org/documentation/spring-boot-starter.html )控制某些资源的交付。FeatureManager通过使用功能标志,可以通过在运行时调用 Bean来检查是否启用了功能(例如“TEST”),如下所示manager.isActive(FeatureToggles.TEST):为了访问管理 Web 资源的标志,我尝试使用 Spring 的映射功能:

不幸的是,这段代码导致了一个无限循环。我想知道如何处理映射到具有条件的相同路径(参见上面的代码)。还有其他方法可以使用 Spring Boot 来控制运行时某些资源的交付吗?

0 投票
1 回答
326 浏览

javascript - 如何从浏览器使用 Unleash Feature 服务器(React 项目)

我正在尝试为我的 React 项目使用释放功能切换。它在后端服务器上运行良好(java sdk 可用)。但我无法从浏览器发出请求(我使用 React 作为前端技术)。在浏览了他们的 git 存储库后,我知道有释放代理概念,它允许我们使用浏览器中的切换。当我尝试通过代理从浏览器连接时,会出现 CORS 问题。请建议我如何设置 CORS 标头以释放在 docker 容器中运行的服务器。

0 投票
1 回答
68 浏览

azure - Azure 功能管理器功能切换以在运行时评估使用标签

在 Azure 功能管理器中使用功能切换提供了在创建功能时配置标签的选项,在 .NET 中使用该标签我能找到的唯一选项是在配置 Azure 应用程序配置时在启动期间设置标签,可以这样做:

这种方法的问题是在运行时我们无法更改标签,因为它是在启动期间预先配置的。问题是我们如何管理不同的标签,假设我有 100 个标签,我希望我的应用程序根据其标签评估功能切换,但我无法找到实现这一目标的方法。为了评估功能切换,我们像这样调用功能管理器 await _featureManager.IsEnabledAsync(setting);