参考资料: https://arp242.net/weblog/yaml_probably_not_so_great_after_all.html
几个 point:
yaml 特别复杂,spec 比 xml 更长,是 json 的十倍多,toml 的七倍多
yaml 复杂在哪里?比 json 超集的地方? 可以表示各种语言原生的类型
yaml 有很多相关的安全问题,因为 parse 的时候是可能构造各种东西的
yaml 宣称的可移植性其实并不成立,除非去掉很多强大的特性
我能理解几乎所有人用说 yaml 的时候,都其实只在说“不超过 json 表达能力的“那个 yaml 的子集,但我希望能让更多人知道其实全集的 yaml 是个问题特别多的东西,另外用 yaml 库 parse 用户输入的时候,请务必多看看文档,可能会有很多 option 是需要调整的
1
HelloAmadeus 2018-11-25 00:58:57 +08:00
ansible 在用,kubernetes 在用, 你只能是在你写的应用程序里面不用, 甚至你都不能决定你的应用程序里面不用 yaml。 你说出个天花板的理由, 也改变不了什么 。要么你就写个更好的, 而且给现在所有语言都写了能用于生产的 parser, 然后在批评 yaml, 那自然会有人给你点赞。
|
2
iamcoward 2018-11-25 01:06:31 +08:00
toml 怎么样呢?有没有了解的说说
|
3
via 2018-11-25 01:31:46 +08:00 via iPhone
对于第一个例子我更宁愿相信是 parser 的锅而不是 yaml 本身的
|
4
Trim21 2018-11-25 02:32:53 +08:00 3
需要写 yaml 的时候我都是写 json 然后转换成 yaml...
|
5
trait 2018-11-25 03:01:10 +08:00 via iPhone
@iamcoward toml 很不错,比起 yaml 长长的一串树结构,toml 的 table 可读性更高,一直是 rust 语言的包管理和工具链配置格式
|
6
buildblock 2018-11-25 03:36:51 +08:00 via iPhone 1
一般情况下 yml 就是拿来做配置的,几个月都不会碰一下,何必纠结这些东西呢。工具是用来解决问题的,不是让你爽的,好用从来都不是一个东西能否得到广泛使用的充分条件。
|
7
lovelybear 2018-11-25 08:36:00 +08:00 via Android
我倒觉得没必要太过纠结于 yaml 好或者不好,没有完美的编程语言,也没有完美的文件格式,与编程语言一样,配置文件格式没有优劣,一切都以适用性为主,哪种配置文件符合你的需要,哪种配置文件可以更快地帮助你完成开发,哪种配置文件就是最好的。
|
8
yurun 2018-11-25 08:47:27 +08:00
同样不喜欢 yaml
|
9
lizheming 2018-11-25 09:20:22 +08:00
yaml 的规范具复杂...有时候加不加引号都需要考虑很久...
|
10
artandlol 2018-11-25 09:36:41 +08:00 via iPhone
https://pulumi.io/
一个管理 yaml 的编程语言,aws 出品 |
11
zhengxiaowai 2018-11-25 10:00:03 +08:00 1
yaml 就一个优点可以胜过 json 了,yaml 可以注释 JSON 无法注释。
你想想看在好几百行的配置文件中,没有注释是一件多可怕的事情 |
12
vakara 2018-11-25 10:10:05 +08:00 via Android
写 yaml 还好,读地话,有时候需要游标卡尺…
|
13
hjc4869 2018-11-25 10:17:13 +08:00
以前我的项目经常用 yaml 做 config,现在全部换回 xml 了🤣
|
14
mcfog OP @via yaml parser 实现的不好其实不也还是标准太复杂了所以不容易做好么…
@buildblock 知道优缺点才能更好的作出选择,开发快只是一点,可维护性,复杂性还有安全性都应该纳入选择的考量范围 @zhengxiaowai 我同意注释对于配置来说是必须的,因此 JSON 做配置并不明智,但这并不代表这就能成为选择 YAML 的理由,因为市面上常见的配置文件方案里,基本只有 JSON 不支持注释 |