【问题标题】:Sharing Config between Node.js, React.js and Python Apps在 Node.js、React.js 和 Python 应用程序之间共享配置
【发布时间】:2019-10-25 19:40:33
【问题描述】:

我的项目目前涉及使用 Javascript 和 Python 的多个组件

  • Node.js 服务器
  • Python 烧瓶 API 服务器
  • Python 数据处理脚本(numpy、pandas 等)
  • React.js 网络客户端
  • React Native 移动客户端

这些组件共享几个常见的配置值,例如服务器端组件使用的数据库连接 URI 字符串 postgresql://admin:password@localhost:5432/foobar 和客户端组件使用的 API 服务器 url https://api.example.com/v1

问题:是否存在跨使用不同语言的组件共享配置文件的最佳做法?

例如,

  1. 所有组件(服务器端和客户端)都应该访问同一个配置文件吗?如果是这样,它应该是哪种格式,JSON、YAML 等?

  2. 是否应该所有组件共享一个公共配置文件(其中只存储公共配置值),但还应该有一个特定于该组件的第二个配置文件?

  3. 是否应该所有服务器端组件共享同一个配置文件,而客户端组件有自己的单独配置文件?

感谢您的建议:)

【问题讨论】:

    标签: javascript python node.js reactjs configuration


    【解决方案1】:

    我建议使用 TOML。所有主要语言都支持它,并允许使用 JSON 不支持的 cmets。

    【讨论】:

      【解决方案2】:

      在我看来,您会在野外看到两种主要方法。

      1. 配置文件。作为数控。提到过,您可以制作一个所有不同工具和应用程序都可以访问的 TOML 文件。这很好,因为只有一个事实来源,而且 TOML 非常易于阅读。缺点是必须为您的语言找到一个 TOML 解析器(imo 并不难),并确保当脚本/服务/任何期望的文件存在时。我已经走了这条路,而且还不错,您甚至可以将文件放在“云”中(NAS、共享数据存储、具有广泛读取权限的文件夹),如果您需要启动超过服务的一个实例。

      2. 环境变量。我最近喜欢这种方法,因为它总是你可以做的最少的配置,而且几乎任何语言都有访问环境变量的工具。此外,您可能不会在可公开访问的纯文本文件中保留敏感信息。

      对于 python,你可以调用 os.environ[MY_CONFIG_NAME] 并且 presto,你有配置信息。

      这两种方法都很常见,并且在几乎所有语言中都有大量支持。

      就客户端、服务器分离而言。我倾向于让我的客户尽可能“愚蠢”,让我的服务器尽可能“聪明”。

      【讨论】:

        猜你喜欢
        • 2014-11-03
        • 2011-03-13
        • 1970-01-01
        • 2015-09-21
        • 1970-01-01
        • 2019-05-10
        • 1970-01-01
        • 1970-01-01
        • 2011-03-23
        相关资源
        最近更新 更多