【问题标题】:When displaying a list of select options that may change in the future, should I hardcode them in the UI or fetch from my database?当显示将来可能更改的选择选项列表时,我应该在 UI 中对它们进行硬编码还是从我的数据库中获取?
【发布时间】:2018-07-09 23:52:17
【问题描述】:

假设我正在创建一个用户界面,用户可以在其中选择他们最喜欢的口袋妖怪:Bulbasaur、Squirtle、Charmander 等。

在我的数据库中,我有一个可能选项的查找表:

pokemon
---
id name
1  Bulbasaur
2  Squirtle
3  Charmander
...

在我的 UI 中,我应该每次都获取此列表还是简单地对其进行硬编码以便用户可以从中进行选择?在 UI 中,这样的事情看起来像是立即出现,但如果在添加更多选项时,您只需在一个地方(数据库)更新它,而不用担心也更新界面?

【问题讨论】:

  • 如果您知道要添加更多口袋妖怪,请从数据库中获取它们而不是硬编码。
  • 您可以通过适当的缓存来减少数据库访问次数。有很多缓存选项,如果您可以让我们知道更新频率、UI 等,也许我们可以提出一个明智的解决方案。此外,如果它是 Web 应用、移动应用或桌面应用等,策略可能会有所不同。
  • @Colin 很可能会添加更多口袋妖怪,因为每隔几年就会创建新的口袋妖怪!
  • @TheLyrist 好点,我将实现缓存,例如Redis/Memcached 用于这样的事情。更新频率将是“每当有人决定要更改他们最喜欢的新口袋妖怪时”,并且 UI 只是用户配置文件中的一个部分 > 单击编辑按钮 > 显示选项列表 > 选择并保存。好奇为什么策略会因应用类型而异?顺便说一句,这是一个移动应用程序。
  • @kayla 对不起,我不熟悉移动开发,所以如果我没有任何意义,请原谅我。对于网络,根据您预期的更新频率,您可以使用不同的缓存过期设置,使用 CDN 等。对于移动和桌面,我假设会有更多的本地缓存选项?我认为许多移动应用程序仅在启动时检查更新的材料,并将列表存储在本地等?

标签: javascript sql node.js reactjs


【解决方案1】:

如果您知道要添加更多口袋妖怪,那么我建议从数据库中获取它们而不是硬编码。

想想它们是否是硬编码的——每次你想添加更多的口袋妖怪时,你都必须向你的用户推送一个新版本的代码。

但是,如果您让前端从例如一个 API,那么您可以在不编辑前端的情况下更新和添加更多选项。

【讨论】:

    【解决方案2】:

    解决方案取决于您的实施。如果您正在创建一个非常小(非常小)的应用程序,那么您可以将您的选项存储在 UI 端。在所有其他情况下,最好从 API 中获取它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-19
      • 1970-01-01
      • 2020-04-16
      • 2016-07-09
      • 2017-12-03
      • 2020-07-28
      相关资源
      最近更新 更多