NingG +

工具系列:toml 文件格式

TOML(Tom’s Obvious, Minimal Language)是一种简洁易读的配置文件格式,旨在取代更复杂的格式(如 JSON、YAML 或 INI)。它的核心设计目标是直观性最小化语法复杂性,使人类和机器都易于编写与解析。

1.核心特点

  1. 语义清晰

键值对使用 = 分隔,类似变量赋值,例如:

title = "TOML Example"
port = 8080
  1. 强类型支持

支持字符串、整数、浮点数、布尔值、日期时间、数组等数据类型:

enabled = true
pi = 3.14
colors = ["red", "green", "blue"]
  1. 层级结构

通过 [section] 定义配置区块,支持嵌套(用 . 分隔):

[server]
ip = "192.168.1.1"

[database.mysql]
user = "admin"
password = "pass123"
  1. 注释友好

使用 # 添加注释:

# 这是服务器配置
[server]
port = 80  # 默认HTTP端口
  1. 不支持复杂表达式

避免逻辑运算(如函数、条件判断),专注于静态配置。

2.与相似格式对比

格式 可读性 复杂度 典型用途
TOML 4星 配置文件(如 Rust 的 Cargo)
YAML 3星 K8s/Ansible 配置
JSON 2星 API 数据交换
INI 3星 传统Windows配置

TOML 优势:比 JSON 易读,比 YAML 简洁(无缩进陷阱),比 INI 功能强。

3.典型使用场景

  1. 软件配置

Rust 的包管理器 CargoCargo.toml 管理依赖:

[package]
name = "my_project"
version = "1.0.0"

[dependencies]
serde = "1.0"
  1. 静态站点生成

Hugo 的 config.toml 配置网站参数:

baseURL = "https://example.com/"
title = "My Blog"
theme = "hyde"
  1. 工具链配置

如 Python 的 pyproject.toml(PEP 518 标准):

[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

4.完整示例

# 全局配置
app_name = "Weather App"
debug_mode = false

[server]
host = "0.0.0.0"
port = 3000
timeout_secs = 30

[database]
url = "mysql://user:pass@localhost/db"
pool_size = 5

[logging]
level = "info"  # 可选: debug, warn, error
file_path = "/var/log/app.log"

5.为什么选择 TOML?

适用建议:优先 TOML 管理简单配置;若需复杂嵌套结构(如 K8s),考虑 YAML。

原文地址:https://ningg.top/intro-of-toml/
微信公众号 ningg, 联系我

同类文章:

微信搜索: 公众号 ningg, 联系我, 交个朋友.

Top