我即将开始开发一个主要用于显示数据集的 Elm 应用程序。数据将准备好几个 JSON 文件(包括不同的文本语言),由 JSON 模式指定。该数据库不会消失,因为存在共享数据集的其他用例。
我现在看到两个从 Elm 访问这些数据的选项。
在运行时检索和解析 JSON
使用json-schema-to-elm或类似的,我可以从我拥有的模式生成数据类型和解析器。然后,在运行时,我加载应用程序需要的 JSON 并解析它。
好处
- 始终使用当前数据而无需额外工作。
- 应用程序大小不会因数据而膨胀。
缺点
- JSON 检索的运行时影响。
- JSON 解析的运行时影响。
- 数据必须存储在模型中。
在编译时将 JSON 转换为 Elm 值
使用手写编译器(可能基于 json-schema-to-elm 生成的类型),我可以将 JSON 数据静态转换为 Elm 代码。因此,数据随应用程序一起提供,并且可以使用 Elm 原语进行访问。
好处
- 直接访问数据,无运行时影响。
- 数据不存储在模型中。
缺点
- 当数据发生变化时,需要重新编译应用程序。
- 应用程序很大,因为需要包含所有数据。
权衡
根据上面的清单,这是我的结论。
- 我希望数据很少发生变化(在开始的管理期之后)。重新编译和部署应用程序应该很简单;不会有任何需要注意的外部互动。
- 该应用程序应该用于移动设置,因此节省网络请求和处理器负载是一件好事。
- 我想要一个独立的版本供离线使用,所以拥有一个整体可能会有所帮助。
- 实际数据集不会太大;我估计最多几百千字节,甚至包括所有语言。
因此,我认为在我的情况下,使用预编译的 Elm 值是更好的解决方案。
我的问题是:我是否遗漏了这两种方法中会影响我权衡的任何方面?我应该考虑其他方法吗?
请注意,我现在并不担心具体的工具;这更像是一个概念性的设计问题。