# 后端 ## 项目介绍 ## 项目结构 ## 部分文件格式 ### list.json `cards` `matters` 和 `reactions` 下的 `list.json` 有相同的格式。每个文件中都只有一个对象。对象的键的内容均是字符串,代表 ID。对象的值的内容均是字符串,代表对应JSON文件的相对路径,不用加 `.json` 后缀名。例如: ```json { "C": "NonMetal/Carbon", "O": "NonMetal/Oxygen", "...": "..." } ``` ### assets/index.json `assets` 目录下的 `index.json` 是资源文件的索引目录文件。该文件的内容是一个对象,每一个键值对对应一个资源文件。键对应的是资源的 ID,值对应的是资源的相对文件路径,不加 `.json` 后缀名。例如: ```json { "Carbon": "cards/carbon.png", "Oxygen": "cards/Oxygen.png" } ``` ## 化学反应格式 化学反应由三部分构成:反应物、反应条件、生成物。基本格式为 `[反应物ID]+[反应物ID](反应条件ID){生成物ID}`,例如 `[C]+[O](Ignite){CO2}` 表示 $\rm{C+O_2}\xrightarrow{点燃}\rm{CO_2}$ 这个反应。 其中的反应物 ID、反应物条件 ID、生成物 ID 都是自定义的。也就是说,同一个反应在不同化学源中的表示方式可能不同。 ## 技术相关 本项目采用工厂模式。所有逻辑代码均放置在 `app` 目录下。所有路由均使用蓝图实现。 ## 最佳实践 对于路径和 ID,均应当使用英文字母、下划线和数字,不应当使用包括中文和短横杠在内的其他字符。由此引发的问题后果自负。 所有 JSON 文件中的缩进均应当使用2个或4个空格,而非制表符(`\t`)。