是否有json文件的预处理器?

问题描述 投票:1回答:3

我有一些配置文件,我将复杂的对象值存储为序列化的json。目前,每个环境(localhost,dev,prod等)和客户端的每个安装都有一个配置文件。大多数值对于环境之间的配置是相同的,但不是全部。因此,对于三个环境和四个客户端,我目前有12个要管理的文件。

如果这是一个web.config文件,那么会有web.config转换来解决问题。如果这是c#,我将使用编译器预处理器指令,可以根据当前的构建配置替换不同的值。

有没有人知道任何基本上这样工作的东西,或者对尝试过的真实方法有一些好的建议?我想要的是为每个安装减少每个环境的文件数量。

json preprocessor configuration-files
3个回答
2
投票

配置的配置对我来说似乎总是有点过头了,但你可以使用属性文件来更改部分,并使用apache ant的<replace>任务来进行替换。像这样的东西:

<replace 
    file="configure.json"
    propertyFile="config-of-config.properties">
  <replacefilter 
    token="@token1@" 
    property="property.key"/>
</replace>

1
投票

来自Google的Jsonnet是一种语言,它具有基于JSON的超集语法,添加了高级语言功能,有助于在JSON格式中建模数据。编译步骤生成JSON。我在一个项目中使用它来描述复杂的部署环境,这些环境有时会彼此继承并共享域属性,尽管它们在不同的实例之间使用它们的方式不同。例如,实例包含应用程序,这些应用程序的租户订阅,合同,目的地等。所有这些属性的值都是在整个环境中重复出现的对象。

他们的文档非常全面,不要错过std functions,因为它们可以提供一些非常强大的数据呈现功能。


0
投票

这真的归结为你的完整堆栈。

如果你在谈论一些只在客户端运行的应用程序,没有任何服务器端处理,那么就没有预处理这样的东西。您可以在实际使用数据之前进一步处理数据,但这并不意味着它将在服务页面之前进行处理 - 这意味着人们必须坐下来等待在需要该数据的应用程序之前发生数据可以初始化。

开始使用JSON的好处是,它只是一个数据存储,并且与语言无关,现在得到了广泛的支持。因此,如果它不是100%客户端,那么就没有什么能阻止您使用服务器上使用的任何语言进行预处理,并根据需要缓存这些文件的版本,以便为用户提供服务(和缓存) 。

如果您确实需要一个系统来对客户端的配置文件进行实时处理,并且您已经完成了创建早期加载的应用程序视图的工作,但向用户显示他们正在推迟初始化(即:“loading ...”/ spinners),然后下载第二个JSON文件,该文件包含所有必需的特定于实现的数据(您将拥有12个这些微小的文件,应该易于管理),将两个JSON文件解析为JS对象,并使用辅助文件中的其他数据扩展大型配置对象。

请注意:使用localhost或其他一些存储工具来缓存它,因此对于html5浏览器,这种较长的加载只发生一次。

© www.soinside.com 2019 - 2024. All rights reserved.