所以我想在这里做的是解释我们的应用程序的需求,并描述一个我到目前为止提出的实现。希望得到一些关于如何在可能的情况下更好地实现的建议。
我们有一个白色标签,或核心产品/应用程序。然后,我们有多个使用该应用程序的客户端,但它们有自己的主题和配置。
在我们开发的新版本中,我们希望构建一个我称之为
配置管理器
. 配置管理器将包含许多有关客户端的详细信息,包括:
-特定于客户端的配置(打开/关闭部分等)
-转换字符串(更改客户端应用程序上的文本)
-主题化配置(改变网站颜色的能力,一个sass配置)
-内容配置(连接到文章/菜单等的外部无头CMS)
要记住的一点是,对于每个客户机,我们当然都有多个环境,包括
dev
,
staging
,
UAT
和
production
。
理想情况下,配置管理器将是一个可以管理客户端的所有配置的地方,甚至可以跨环境同步这些配置。下面是可能发生的事情的一个例子:
-
客户ABC希望启用应用程序的新部分
-
dev可能会进入他们的config manager版本并启用这个新的部分,也许只是快速地验证该部分是否按预期工作并且颜色是否正确
-
然后,我们希望将相同的更改应用到一个登台服务器,以允许qa运行一些测试
-
此外,对uat服务器应用相同的更改,以允许客户端测试更改
-
最后,将更改应用于生产
当谈到配置管理器时,我第一个真正的问题是,如果有人知道一个可以用于这些目的的工具。它实际上需要在数据库中存储json数据。
下一个真正的问题是主应用程序将如何实际获得这些数据。最明显的方法是从主应用程序到配置管理器点击一个端点,获取站点配置、翻译、内容(文章和菜单)等。在这种情况下,我们显然希望实现某种类型的缓存,因为没有理由在每次页面加载时获取菜单,特别是考虑到菜单不会经常更改(其他配置也不会真正更改)。
不过,我认为最好是主应用程序有一个生成过程,在生成时考虑所有配置(从配置管理器)。我们使用
gulp
因此,在我们的构建过程中,我们可以在配置管理器中命中相同的端点来获取构建主应用程序所需的所有配置。
应用程序还有其他部分,但我不太担心这些部分将如何工作。其中包括:
-从主应用程序连接到api以获取数据
-主应用程序的每个实例都有一个附带的设计系统应用程序
我还要说,目前,我们计划使用
next.js
,以及中的配置管理器
nuxt.js
。