首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  程序员

感觉很少有人真的了解 yaml(的缺点),很多人了解的 yaml 其实仅限于 json 语法糖范围

  •  4
     
  •   mcfog · 237 天前用 Android 发布 · 3703 次点击
    这是一个创建于 237 天前的主题,其中的信息可能已经有所发展或是发生改变。

    参考资料: 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 是需要调整的

    14 回复  |  直到 2018-11-25 11:32:45 +08:00
        1
    HelloAmadeus   237 天前
    ansible 在用,kubernetes 在用, 你只能是在你写的应用程序里面不用, 甚至你都不能决定你的应用程序里面不用 yaml。 你说出个天花板的理由, 也改变不了什么 。要么你就写个更好的, 而且给现在所有语言都写了能用于生产的 parser, 然后在批评 yaml, 那自然会有人给你点赞。
        2
    iamcoward   237 天前
    toml 怎么样呢?有没有了解的说说
        3
    via   237 天前 via iPhone
    对于第一个例子我更宁愿相信是 parser 的锅而不是 yaml 本身的
        4
    Trim21   237 天前   ♥ 3
    需要写 yaml 的时候我都是写 json 然后转换成 yaml...
        5
    trait   237 天前 via iPhone
    @iamcoward toml 很不错,比起 yaml 长长的一串树结构,toml 的 table 可读性更高,一直是 rust 语言的包管理和工具链配置格式
        6
    buildblock   237 天前 via iPhone   ♥ 1
    一般情况下 yml 就是拿来做配置的,几个月都不会碰一下,何必纠结这些东西呢。工具是用来解决问题的,不是让你爽的,好用从来都不是一个东西能否得到广泛使用的充分条件。
        7
    lovelybear   237 天前 via Android
    我倒觉得没必要太过纠结于 yaml 好或者不好,没有完美的编程语言,也没有完美的文件格式,与编程语言一样,配置文件格式没有优劣,一切都以适用性为主,哪种配置文件符合你的需要,哪种配置文件可以更快地帮助你完成开发,哪种配置文件就是最好的。
        8
    yurun   237 天前
    同样不喜欢 yaml
        9
    lizheming   237 天前
    yaml 的规范具复杂...有时候加不加引号都需要考虑很久...
        10
    artandlol   237 天前 via iPhone
    https://pulumi.io/
    一个管理 yaml 的编程语言,aws 出品
        11
    zhengxiaowai   237 天前   ♥ 1
    yaml 就一个优点可以胜过 json 了,yaml 可以注释 JSON 无法注释。

    你想想看在好几百行的配置文件中,没有注释是一件多可怕的事情
        12
    vakara   237 天前 via Android
    写 yaml 还好,读地话,有时候需要游标卡尺…
        13
    hjc4869   237 天前
    以前我的项目经常用 yaml 做 config,现在全部换回 xml 了🤣
        14
    mcfog   237 天前   ♥ 1
    @via yaml parser 实现的不好其实不也还是标准太复杂了所以不容易做好么…

    @buildblock 知道优缺点才能更好的作出选择,开发快只是一点,可维护性,复杂性还有安全性都应该纳入选择的考量范围

    @zhengxiaowai 我同意注释对于配置来说是必须的,因此 JSON 做配置并不明智,但这并不代表这就能成为选择 YAML 的理由,因为市面上常见的配置文件方案里,基本只有 JSON 不支持注释
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1976 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 18ms · UTC 11:35 · PVG 19:35 · LAX 04:35 · JFK 07:35
    ♥ Do have faith in what you're doing.