V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
NoKey
V2EX  ›  程序员

为什么我总觉得 yml 文件格式很奇葩

  •  
  •   NoKey · 2019-04-12 10:40:19 +08:00 · 9942 次点击
    这是一个创建于 2089 天前的主题,其中的信息可能已经有所发展或是发生改变。
    从第一次见到 yml 文件到现在,我依然觉得这个文件格式很奇葩
    一直无法接受和使用这种文件格式
    58 条回复    2019-04-13 21:52:21 +08:00
    love
        1
    love  
       2019-04-12 10:50:06 +08:00
    我也是接受不了。
    而且复杂的细节还挺多。
    myyou
        2
    myyou  
       2019-04-12 10:51:17 +08:00   ❤️ 2
    的确奇葩,个人感觉 toml 更好
    NieKing
        3
    NieKing  
       2019-04-12 10:51:28 +08:00
    Flutter 里面还有 yaml 呢
    wc951
        4
    wc951  
       2019-04-12 10:52:17 +08:00 via Android
    为啥,因为缩进?
    wizardoz
        5
    wizardoz  
       2019-04-12 10:52:56 +08:00   ❤️ 1
    yaml 和 json 是对等的呀,你就认为是在编辑 json 好了。不过比 json 友好。
    wangxiaoaer
        6
    wangxiaoaer  
       2019-04-12 10:55:17 +08:00   ❤️ 1
    @myyou #2 +1,toml 那屎一样的嵌套,毫无可读性而言,真不知道是怎么起来的。
    ShareDuck
        7
    ShareDuck  
       2019-04-12 10:56:23 +08:00 via Android   ❤️ 1
    不喜欢缩进要求严格的格式。
    no1xsyzy
        8
    no1xsyzy  
       2019-04-12 11:00:32 +08:00   ❤️ 1
    如果不太复杂反而自己按需拓展的 INI 会更好。
    YAML 方便的就是这些解析器不需要自己拓展。
    另外,我觉得一个大问题是结构太松散导致眼 parse 费力,尤其是 array 套 object 时。
    Track13
        9
    Track13  
       2019-04-12 11:01:34 +08:00 via Android
    因为缩进问题。。忙活半小时
    mcfog
        10
    mcfog  
       2019-04-12 11:03:24 +08:00   ❤️ 1
    @wizardoz
    和 json 等价的部分只是 yaml 的一个子集,其实 yaml 是一个比 xml 还要复杂的格式
    wolfie
        11
    wolfie  
       2019-04-12 11:17:44 +08:00
    缩进 2 -> 4 就好了
    runze
        12
    runze  
       2019-04-12 11:21:00 +08:00
    yaml 过于复杂了,toml 相比之下简明很多。
    NoKey
        13
    NoKey  
    OP
       2019-04-12 11:21:48 +08:00
    properties 文件不好么,为啥我看现在开始流行 yml
    zh584728
        14
    zh584728  
       2019-04-12 11:23:26 +08:00   ❤️ 1
    @ShareDuck python 开发者 退出了群聊
    runze
        15
    runze  
       2019-04-12 11:25:53 +08:00
    NULL, Null, null, nil, Nil, ~, 留空

    在 yaml 里,以上哪些相当于 json 里的 null ?
    yanaraika
        16
    yanaraika  
       2019-04-12 11:26:43 +08:00
    格式简单,表达能力弱 <--------------------> 格式复杂,表达能力强

    ad hoc 格式(例如 linux 中的 resolv.conf), json, toml, yaml, code as config
    aaa5838769
        17
    aaa5838769  
       2019-04-12 11:27:40 +08:00
    k8s 也用到了 yaml,的确很麻烦,缩进一些问题。如果找个好点的文本编辑器,还可以过得去。
    wesnow
        18
    wesnow  
       2019-04-12 11:50:12 +08:00
    对于很多开源 Java 项目都用 yaml 觉得很奇怪,明明 properties 比 yaml 更易读更易写,为什么不用 properties?
    Phariel
        19
    Phariel  
       2019-04-12 11:53:41 +08:00 via iPhone
    说起 yaml 我就想起了 Jade 一个远古的 template engine
    http://jade-lang.com/

    异曲同工之妙。。。
    ansyx
        20
    ansyx  
       2019-04-12 11:58:03 +08:00 via Android
    不能用 tab 逼死个人
    hoyixi
        21
    hoyixi  
       2019-04-12 12:05:18 +08:00
    你知道 stylus 吗?
    trait
        22
    trait  
       2019-04-12 12:08:59 +08:00 via iPhone   ❤️ 1
    @wangxiaoaer toml 简直完美 没觉得难读
    whileFalse
        23
    whileFalse  
       2019-04-12 12:10:10 +08:00
    @mcfog 对,所以其实不用那些 feature 就好了。
    yaml 大部分用法还是代替 json 吧。
    abmin521
        24
    abmin521  
       2019-04-12 12:15:59 +08:00 via Android
    长配置 yaml 还是很爽的
    推荐阅读 https://linux.cn/article-10423-1.html
    @wesnow
    shawndev
        25
    shawndev  
       2019-04-12 12:18:56 +08:00
    看来因为 tab 吃亏的不止我一个……不过 json 也确实不太适合用于配置文件。目前看来微软使用的 ini 和苹果使用的 plist 还是比较好的选择
    shawndev
        26
    shawndev  
       2019-04-12 12:19:41 +08:00   ❤️ 1
    还是补充一句吧,plist 优于 json 在于可以注释,ini 优于 json 在于冗余信息少,而且直观
    lincanbin
        27
    lincanbin  
       2019-04-12 12:24:19 +08:00 via Android
    JSON 不支持注释,数组不支持,
    lincanbin
        28
    lincanbin  
       2019-04-12 12:24:36 +08:00 via Android
    数组不支持以,结尾
    jsthon
        29
    jsthon  
       2019-04-12 12:28:20 +08:00 via iPhone
    TAB 真的是害人不浅
    liuxey
        30
    liuxey  
       2019-04-12 13:08:11 +08:00
    properties
    wangxiaoaer
        31
    wangxiaoaer  
       2019-04-12 14:03:37 +08:00
    @wesnow #18 properties 默认不是 utf-8 编码,遇到中文就跪了
    version
        32
    version  
       2019-04-12 14:06:36 +08:00
    yml 兼容性好很多.
    json 配置.比较坑.特别是数组的那些配置.
    json 新标准很多人不知道.,不好统一和推广.或者识别..所以很多开源都推荐 yml 了.

    pm2 用 yml 靠谱点.json 配置容易环境变量参数不生效
    HangoX
        33
    HangoX  
       2019-04-12 14:07:28 +08:00
    properties 主要问题是长吧?阅读起来比较困难,json 主要是不好编辑,所以就出现了 yaml,编辑起来的确方便
    ojbkojbk
        34
    ojbkojbk  
       2019-04-12 14:15:23 +08:00
    yml 可读性高这一条就可以秒杀 properties
    icylogic
        35
    icylogic  
       2019-04-12 14:16:12 +08:00 via iPhone   ❤️ 1
    作为一个,人类易读,易写,同时可以支持比较复杂的配置和数据格式

    - yaml 用缩进真是太可怕了,我能接受 python 作为代码用缩进控制逻辑,但配置文件不应该这么搞。而且过于复杂。
    - json 噪音太多,没有标准注释
    - ini, conf 表达能力弱
    - xml 噪音太多,其他问题倒不大,可以勉强接受
    - 其他格式 太小众的个人项目 /没有一个大项目在用 /没有多语言比较成熟的 binding

    我选择 toml ……
    magicdawn
        36
    magicdawn  
       2019-04-12 14:40:08 +08:00
    好用啊
    btw prettier 也支持 yaml 了
    https://prettier.io/docs/en/index.html
    runze
        37
    runze  
       2019-04-12 14:43:21 +08:00
    jhsea3do
        38
    jhsea3do  
       2019-04-12 16:12:08 +08:00
    docker-compose / etcd 用 yaml 了很多年 已经习惯了
    rockyou12
        39
    rockyou12  
       2019-04-12 16:16:50 +08:00   ❤️ 1
    gradle 这种用代码来做 dsl 才配置文件的未来,可简单可复杂,又有无穷的表达能力
    biossun
        40
    biossun  
       2019-04-12 17:05:06 +08:00
    其实你需要的只是一个支持 yaml 语法检查的编辑器,甚至它可以自动帮你修复一些语法格式上的问题。
    test0x01
        41
    test0x01  
       2019-04-12 18:41:12 +08:00 via Android
    你只需要使用它的最基础的功能。是你自己把文件写那么复杂。人家只是复杂功能,不代表你一定要用啊。
    Varobjs
        42
    Varobjs  
       2019-04-12 19:20:38 +08:00 via Android
    个人觉得 yaml 比 json 好
    hantsy
        43
    hantsy  
       2019-04-12 19:26:53 +08:00
    Spring Boot 支持 YAML,除非简单几个属性的配置才用 properties,一般都是用 YAML 格式, 可读性好得多
    impl
        44
    impl  
       2019-04-12 20:10:54 +08:00 via Android
    Cargo.toml
    ww2000e
        45
    ww2000e  
       2019-04-12 21:11:42 +08:00
    更喜欢 yaml。。因为能注释
    guyujiezi
        46
    guyujiezi  
       2019-04-12 21:23:25 +08:00
    yaml 方便阅读
    anguiao
        47
    anguiao  
       2019-04-12 21:37:04 +08:00
    YAML 不管是手写还是阅读都还可以吧,起码比 JSON 好多了
    reus
        48
    reus  
       2019-04-12 22:12:01 +08:00
    toml 大法好
    omph
        49
    omph  
       2019-04-12 22:41:15 +08:00
    [JSON、XML、TOML、CSON、YAML 大比拼]( https://linux.cn/article-10664-1.html)
    crist
        50
    crist  
       2019-04-12 22:48:25 +08:00
    toml 大法好
    zengguibo
        51
    zengguibo  
       2019-04-13 00:27:52 +08:00
    反人类,没有工具根本编辑不了,多个空格都报语法错误
    iyaozhen
        52
    iyaozhen  
       2019-04-13 03:17:54 +08:00 via Android
    yaml 很好用呀,能注释,带基本数据结构
    格式要求严格才好,统一。Python 党很喜欢。
    Sparetire
        53
    Sparetire  
       2019-04-13 03:35:05 +08:00 via Android
    yaml 在不超过 30 行的配置里用起来很愉快,不需要像 json 那样带引号,且支持注释,但是更长的话人眼游标卡尺也是很累的。。大概和作者是 python 出身有关?
    toml 感觉挺好
    sunocean
        54
    sunocean  
       2019-04-13 09:57:15 +08:00
    只有我觉得,读起来很舒服吗? (尤其是读完 JSON 以后)
    arthas2234
        55
    arthas2234  
       2019-04-13 10:03:02 +08:00
    yaml 要配一个好一点的编辑器,不然很难受
    lrh3321
        56
    lrh3321  
       2019-04-13 10:38:29 +08:00 via Android
    习惯了以后觉得还凑合,至少比 xml 简洁多了。不过我还是更希望用 json
    www5070504
        57
    www5070504  
       2019-04-13 13:08:29 +08:00
    本 python 党特别不喜欢 yaml。。。
    fooofei
        58
    fooofei  
       2019-04-13 21:52:21 +08:00 via iPhone
    如果实现语言是 python 这样的解释型脚步语言,最好的配置文件应该是.py 文件这样同类型的,既能写注释,又能作为代码无缝使用。编译型语言就不适用这个规则了,才需要 toml 这样的配置文件。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1013 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 20:09 · PVG 04:09 · LAX 12:09 · JFK 15:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.