什么是数据模型?

本节将介绍 FreeMaker 中的数据模型,理解好数据模型对熟练使用 FreeMaker 非常重要。

您可能一听到“数据模型”会感觉很高深,其实不然;下面通过一个JSON让你来理解 FreeMaker 的数据模型,如下图:

上图中,其实就是一个 JSON 对象;如果你使用可视化工具查看,会发现数据模型就是一棵树(看图左边),这棵树可以非常复杂、非常深(这就需要根据实际的业务需要来调整)。

仔细观察上面JSON对象,会发现存在两种类型的对象:单值对象 和 hash对象。其中 “message”、“foo”、“size”、“price”这些key就是单值,因为它们后面直接就是我们需要的实际数据,如:字符串、数字等。而hash对象则是将很多单值对象收拢在一起,然后给它们取个名字,你就可以使用“名字.key”的方式去访问了。如:“misc”、“animals”、“mouse”、“elephant”、“python”就是hash对象,其中 animals 是 hash 对象中放 hash对象。因此,想访问 “mouse”的 “price”你需要使用

注意:上面还有一个非常特殊的 hash 对象,它就是“root”;如果要在模板中使用子变量, 那应该从根 root 开始指定它的路径,每级之间用点来分隔开。要访问 mouse 的 price ,要从 root 开始,首先进入到 animals ,之后访问 mouse ,最后访问 price 。就可以这样来写,记住不要将 root 写出来,变成 root.animals.mouse.price

另外还有一个非常有用的对象“序列/数组/列表”。它们像Hash表那样存储子变量,但是子变量没有名字,它们只是列表中的项。 比如,在下图中这个数据模型中, animals 就是序列:

要访问序列的子变量,可以使用方括号形式的数字索引下标。 索引下标从0开始(从0开始也是程序员的传统);那么第一项的索引就是0, 第二项的索引就是1等等。要得到第一个 animals 的 name,可以这么来写代码。实践中,通常按顺序遍历序列,而不用关心索引,在后续将介绍怎样遍历序列。

到这里 FreeMaker 的数据模型常用三种存储类型您都了解了,这下我们可以构建一个稍微复杂的数据模型。假如我们有一个网站的页面,该页面包含了网站导航栏(头)、各种内容列表、底部版权信息。模型如下:

用 Java 的话说,数据模型就是 Map 嵌套 Map 或 List,然后 List 中 嵌套 Map 或 List(可以嵌套多层)。

总结

  • 数据模型可以被看成是树形结构。

  • 单值对象用于存储单一的值,这种类型的值可以是字符串,数字,日期/时间或者是布尔值。如:name=""

  • 哈希表(Hash)是一种存储变量及其相关且有唯一标识名称的容器。如:person = { name="", age="" };

  • 序列(Sequences)是存储有序变量的容器。存储的变量可以通过数字索引来检索,索引通常从0开始。如:persons = [ { name="", age="" }, { name="", age="" } ]

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号