YAML – 完整示例
YAML - 完整示例
Section titled “YAML - 完整示例”此示例演示了 YAML 的多项特性,包括嵌套结构、锚点 (&)、别名 (*) 和合并键 (<<)。这些特性对于创建可维护且简洁的配置文件非常有用。锚点和别名有助于避免重复,而合并键则允许从文档的其他部分继承属性。
考虑以下用于不同环境的数据库设置的 YAML 配置:
defaults: &defaults adapter: postgresql host: localhost pool: 5
development: database: myapp_development <<: *defaults # Merge the 'defaults' here
test: database: myapp_test <<: *defaults # Merge the 'defaults' here pool: 2 # Override the 'pool' value from defaults
production: database: myapp_production adapter: postgresql host: prod-db.example.com pool: 50我们来分解一下这个示例:
&defaults: 这是一个名为 ‘defaults’ 的锚点。它将跟随其后的映射(adapter、host、pool)标记为一个可重用块。*defaults: 这是一个别名。它引用锚定在 ‘defaults’ 处的内空。<<: *defaults: 这是一个合并键。它指示 YAML 解析器将别名引用的 ‘defaults’ 映射中的键值对合并到当前映射(‘development’ 和 ‘test’)中。如果发生冲突(例如,‘test’ 中的 ‘pool: 2’ 覆盖了 ‘defaults’ 中的 ‘pool: 5’),则当前映射中的键将覆盖合并映射中的键。
当此 YAML 被解析时,它有效地展开为以下数据结构(概念上类似于 JSON):
{ "defaults": { "adapter": "postgresql", "host": "localhost", "pool": 5 }, "development": { "database": "myapp_development", "adapter": "postgresql", "host": "localhost", "pool": 5 }, "test": { "database": "myapp_test", "adapter": "postgresql", "host": "localhost", "pool": 2 }, "production": { "database": "myapp_production", "adapter": "postgresql", "host": "prod-db.example.com", "pool": 50 }}此示例展示了如何利用 YAML 的结构和可重用性特性来创建复杂但易读的配置。