大家对 TOML (GitHub 主导的替代 YAML 的格式) 在 Nodejs 项目中的使用怎么看

大家对 TOML (GitHub 主导的替代 YAML 的格式) 在 Nodejs 项目中的使用怎么看

作者是 GitHub 联合创始人 Tom Preston-Werner :

因为我们需要一个像样的人类可读的格式,同时能无歧义地映射到哈希表。然后 YAML 的规范有 80 页那么长,真是发指!不,不考虑 JSON 。你知道为什么。

好像已经有半打 Node 的实现了。

正式的 Spec 好像还没有。目前只有 GitHub 上的一个 README中译


4 回复

大家对 TOML(GitHub 主导的替代 YAML 的格式)在 Node.js 项目中的使用怎么看

作者:GitHub 联合创始人 Tom Preston-Werner

背景介绍

在软件开发中,配置文件的格式选择是一个重要的决策。不同的项目可能有不同的需求,但通常我们希望配置文件既易于阅读和编写,又能准确无误地映射到数据结构中。常见的选择包括 YAML、JSON 和 TOML。

问题背景

  • YAML: 优点是人眼友好,但其规范过于复杂(长达80页),且容易出现歧义。
  • JSON: 简单明了,但缺少注释功能,而且有些时候语法略显繁琐。
  • TOML: GitHub 联合创始人 Tom Preston-Werner 提出的一种新的配置文件格式,旨在解决 YAML 和 JSON 的缺点。

TOML 的优势

  1. 简洁性: TOML 使用简单的键值对,易于理解和编写。
  2. 无歧义: 相比 YAML,TOML 的语法更加明确,减少了歧义的可能性。
  3. 注释支持: TOML 支持标准的 # 注释,这使得文档化配置文件变得简单。

Node.js 中使用 TOML

尽管 TOML 是一种相对较新的格式,但在 Node.js 社区中已有多种实现方式。例如,可以使用 toml-js 库来解析和生成 TOML 文件。

// 安装 toml-js
npm install toml-js

// 引入库
const toml = require('toml');

// 示例 TOML 文件内容
const tomlData = `
title = "Example TOML"
number = 42
array = [1, 2, 3]
boolean = true
`;

// 解析 TOML 文件
const parsedData = toml.parse(tomlData);
console.log(parsedData); // 输出: { title: 'Example TOML', number: 42, array: [ 1, 2, 3 ], boolean: true }

// 生成 TOML 文件
const generatedTOML = toml.stringify(parsedData);
console.log(generatedTOML); // 输出: title = "Example TOML"\nnumber = 42\narray = [ 1, 2, 3 ]\nboolean = true

社区现状

虽然 TOML 的正式规范还在不断完善中,但已经有不少社区贡献者在 GitHub 上提交了实现。比如,你可以参考 mojombo/toml 来了解更多关于 TOML 的细节。

总结

总体而言,TOML 作为一种新兴的配置文件格式,在 Node.js 项目中具有很大的潜力。它结合了 YAML 和 JSON 的优点,同时避免了它们的缺点。随着社区的不断贡献和完善,TOML 将成为未来配置文件格式的重要选项之一。


通过这段内容,我们可以看到 TOML 作为一种配置文件格式,在 Node.js 项目中具备许多优势,同时也展示了一个简单的使用示例。


很早看到了, 但是没见什么项目在用, JS 社区用 JSON 基本上都是了, 像 GitHub 的 Atom 用了 CSON, 相对来说已经好很多了. 我觉得 TOML 不如 CSON

其实自己定义一个数据标记语言是挺好玩的事情… https://github.com/Cirru/cirru-json

TOML 对 YAML,然后 CSON 对 JSON 。 不过确实 YAML 本身和 JSON 也基本重叠。

TOML 是一种简洁且易于阅读的数据序列化格式,由 GitHub 联合创始人 Tom Preston-Werner 提出,旨在替代 YAML 和 JSON。它非常适合用于配置文件,因为它既简单又强大。

优点

  1. 简洁易读:与 YAML 相比,TOML 更加简洁、易读。
  2. 结构清晰:TOML 支持常见的数据结构,如键值对、数组等。
  3. 避免歧义:TOML 的语法设计尽量减少了歧义,使得解析更加可靠。

使用场景

  • 配置文件:适用于应用的配置文件。
  • 项目设置:可以用来存储项目的设置信息。

示例

安装依赖

首先,你需要安装 toml 模块:

npm install toml

示例代码

生成 TOML 文件
const toml = require('toml');

const data = {
  user: {
    name: "Alice",
    age: 28,
    hobbies: ["reading", "coding"]
  },
  settings: {
    language: "en",
    theme: "dark"
  }
};

const tomlString = toml.stringify(data);
console.log(tomlString);

输出结果:

[user]
name = "Alice"
age = 28
hobbies = ["reading", "coding"]

[settings]
language = "en"
theme = "dark"
解析 TOML 文件
const toml = require('toml');

const tomlString = `
[user]
name = "Alice"
age = 28
hobbies = ["reading", "coding"]

[settings]
language = "en"
theme = "dark"
`;

const parsedData = toml.parse(tomlString);
console.log(parsedData);

输出结果:

{
  user: {
    name: 'Alice',
    age: 28,
    hobbies: [ 'reading', 'coding' ]
  },
  settings: {
    language: 'en',
    theme: 'dark'
  }
}

总结

TOML 作为一种配置文件格式,在 Node.js 项目中非常有用。它的简洁性和易读性使其成为替代 YAML 和 JSON 的良好选择。如果你需要一个简单而强大的配置文件格式,TOML 是一个不错的选择。

回到顶部