简单谈谈配置文件

最近做的一个项目要使用下配置文件,以前简单使用过XML,json等,现在想看看还有其他好用的配置文件方案没有,查了下win下主要采用的ini格式的配置文件,当然还有YAML方案。

查了下资料,几种配置文件的方案特点如下:

我认为好的配置文件必须包含下面几个因素:

1. 规则足够简单
2. 支持简单的层级关系
3. 允许注释
4. 易于解析

5. 支持嵌套的层级关系

6. 支持类型

json:

由于 JavaScript 的流行,JSON当然成了最适合JavaScript使用的配置文件。JSON可以在JavaScript中使用eval()或者JSON.parse()来解析,解析后的内容直接成为JavaScript的内置对象。

但是,其实 JSON 不适合作为配置文件使用。根据上面我定义的好的配置文件条件来看:JSON 规则简单但不宜读(尤其是复杂的没有格式化过的 JSON),不支持注释,也不能使用较为宽松的语法。

例如,下面这种多余的逗号在 JSON 中被认为是错误的语法:

JSON.parse('[1, 2, 3,]')
// SyntaxError: JSON.parse: unexpected character at 
// line 1 column 10 of the JSON data

JSON的确是在网页和 API 中传递信息的一种好格式,而且各种语言都有它的解析库,但但并不适合做配置文件。

INI格式是好的配置文件,还包含优秀的配置文件的一些特性。由于解析简单,我们可以对它做一些扩展以符合我们的需求。

XML

XML 当然是好的配置文件,但它编辑起来太麻烦。即使是有notepad++这类软件的存在,太多的尖括号和嵌套也让手写这种配置文件变得艰难。同样是由于太多的尖括号,让我不愿意阅读它。同样,由于太多的尖括号,导致在版本管理中对不同的文件版本进行比较的时候并不太直观。总之,我不愿意手写这两种配置文件格式,机器生成倒是很好的选择。实际上,一些软件的特定文件格式就是基于 XML 的。

YAML —— 堪称完美

YAML: YAML Ain’t Markup Language 是为了替代 XML 而生。

为什么不是XML呢?因为:

  • YAML的可读性好。
  • YAML和脚本语言的交互性好。
  • YAML使用实现语言的数据类型。
  • YAML有一个一致的信息模型。
  • YAML易于实现。

上面5条也就是XML不足的地方。同时,YAML也有XML的下列优点:

  • YAML可以基于流来处理;
  • YAML表达能力强,扩展性好。

总之,YAML试图用一种比XML更敏捷的方式,来完成XML所完成的任务。


ps: csdn 编辑器真的好难用,下次还是用markdown吧



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值