编码约定:后端与前端标签匹配

Coding convention: Matching backend with frontend labels

在我的后端,我有以驼峰式命名的数据属性:

customerStats: {
  ownedProducts: 100,
  usedProducts: 50,
},

我的 UI 代码的设置方式是 ["label", 数据] 的数组在大多数情况下效果最好,即前端编码最方便。在我的前端,我需要这些标签使用正确的英文拼写,以便它们可以按原样在 UI:

中使用
customerStats: [
  ["Owned products", 100],
  ["Used products", 50],
],

我的问题是关于网络开发的最佳实践或标准。我在过去的项目中一直不一致,我会在随机位置转换数据,有时在客户端,有时在后端,有时以一种方式转换然后再转换回来,因为我需要 JSON 数据结构。

是否有关于如何将数据提供给前端的编码约定?

现在我的所有数据都以 JSON 的形式传输到前端。将数据转换为前端或后端所需的形式是最佳做法吗?如果我需要 JSON 属性在客户端进行进一步计算怎么办?

我正在使用的技术:

Is there a coding convention for how to transfer data to the front end

如果您的前端是 Java基于脚本的,那么 JSON (Java 脚本对象表示法) 是最简单的使用形式, 它是内存中对象的 stringified 版本。 See this healthy discussion for more information on JSON

考虑到目前最流行的前端开发语言是JavaScript,(see the latest SO Survey on technology)使用JSON格式在之间传输数据是非常普遍和广泛接受的解决方案的后端和前端。在非 Java 基于脚本的解决方案中使用 JSON 的决定受到您使用的开发和部署工具的影响,看到越来越多的开发人员正在使用 JavaScript,我们的大多数工具都是经过设计的以某种方式支持 Java脚本。

然而,使用其他结构化格式同样可以接受,例如 XML。

JSON 通常比 XML 更轻量级,因为传输有关架构的元数据的规定较少。对于内部数据流,在每次数据传输时传输完全指定的 XML 模式可能是多余的,因此 JSON 是发送方之间不存在数据结构问题的好选择和接收器。

XML 是一种更正式的数据传输格式,它可以包含完整的模式文档,允许接收者在很少或没有额外文档的情况下使用信息。

CSV 或其他自定义格式可以减少通过网络发送的字节数,但在需要时很难直观地检查数据,并且在发送端和接收端都存在格式化和解析数据的开销数据。

Is it best practice to convert the data to the form that is need on the frontend or backend?

最佳做法是减少数据元素需要转换的次数。理想情况下,您永远不必在标签和数据 属性 名称之间进行转换...这也是使用 JSON 作为数据传输格式的主要原因。

因为 JSON 可以在 Java 脚本前端中进行本地解释,所以在 Java 脚本前端中,我们基本上可以将转换减少到数据所在的服务器端边界是 serialized/deserialized。实际上前端根本没有转换。

How to refer to data by the property name and not the visual label

此 space 中普遍接受的约定是将数据模型和用户体验、视图之间的关注点分开。重要的是视图是最接近用户的层,它代表给定的'point of view'数据模型。

如果没有为上下文提供任何语言或代码,很难为 OP 定制代码解决方案,在抽象意义上,应用这个概念意味着不尝试让数据模型承载有关数据如何传输的最终信息应该显示,而不是你有另一段代码提供呈现数据所需的信息。

在不同的技术和平台中,我们以不同的方式提及这一点,但将模型与视图或表示分离的核心概念始终通过这些设计模式表示:

对于OP的特定场景,这可能涉及如下映射结构:

customerStatsLabels: {
  ownedProducts: "Owned products",
  usedProducts: "Used products",
}

如果这个问题更新了一些关于 UI 是如何构建的代码,我将用更具体的内容更新这个回复。

注意:

在 JavaScript 中,对象只是数组的数组,因此很容易将基于数组的现有代码调整为基于对象的代码,反之亦然。