【问题标题】:What is the difference between .yaml and .yml extension? [duplicate].yaml 和 .yml 扩展名有什么区别? [复制]
【发布时间】:2014-04-11 17:07:43
【问题描述】:

我在YAML-wikipedia 上阅读了它们,但并没有真正理解它们之间的主要区别。我看到有人使用.yaml 扩展名,但是,Symfony2 使用.yml 扩展名。

YAML 是一种人类可读的数据序列化格式,它采用了来自 C、Perl 和 Python 等编程语言的概念,以及来自 XML 和电子邮件数据格式的想法。

YAML 是“YAML Ain't Markup Language”的递归缩写。在其发展的早期,据说 YAML 的意思是“另一种标记语言”[3],但随后对其进行了重新解释(将原始首字母缩略词反译)以区分其面向数据的目的,而不是文档标记。

那么,.yaml.yml 之间究竟有何不同?我们什么时候应该更喜欢一个?

【问题讨论】:

    标签: symfony yaml naming-conventions


    【解决方案1】:

    文件扩展名对文件的内容没有任何影响或影响。您可以将 YAML 内容保存在具有任何扩展名的文件中:.yml.yaml 或其他任何扩展名。

    您使用.yaml 而不是.yml 的(相当稀疏的)YAML 常见问题解答recommends,但由于历史原因,许多Windows 程序员仍然害怕使用超过三个字符的扩展,因此选择使用@ 987654327@ 代替。

    因此,真正重要的是文件内部的内容,而不是其扩展名。

    【讨论】:

    • 将“.YML”优先于“.YAML”归因于 DOS 8.3 字符约定是 IMO 一个红鲱鱼。这更有可能是因为以“Y”开头的三 (3) 个字符足够清晰,因为很少有扩展名以“Y”开头。
    • Windows 及其 8.3 规则明显强化了 3 字符扩展的趋势。当今人们出于恐惧而行动的想法可能有些夸张,但他们出于习惯而行动似乎是无可争辩的,而且这种做法深受 Windows 的影响似乎也无可争辩。
    • 有趣的是,3 字符扩展名早于 Microsoft。例如,DEC 的 PDP-11 有 6.3 个文件名,用 3 个 16 位字编码:en.wikipedia.org/wiki/DEC_Radix-50#16-bit_systems
    • 对我来说,关心的是是否存在版本差异(例如 MS Office,新版本末尾有 x)。感谢您的澄清。
    • 我确实更喜欢 3 个字符的扩展名,因为我有点“害怕”将来会遇到一些其他系统或程序在 8.3 的限制下产生一些随机问题。然而,读到这里,我意识到了这种陈旧的“恐惧”,也许它有点傻。也许是时候勇敢了! .yaml 和 .json 一路走来!
    【解决方案2】:

    正如@David Heffeman 所指出的,建议尽可能使用.yaml,并且自 2006 年 9 月以来一直是这种建议。

    一些项目使用.yml主要是因为实施者/文档者的无知:他们想使用YAML是因为可读性,或者其他格式不提供的一些其他功能,不熟悉建议并且刚刚实施什么有效,可能是在查看其他项目/库之后(不质疑所做的是否正确)。

    解决这个问题的最好方法是在创建新文件时保持严格(即使用.yaml)并在接受输入时保持宽容(即在遇到输入时允许.yml),可能会自动升级/更正尽可能出现这些错误。

    我的另一个建议是,当您认为必须使用时,记录您必须使用.yml 的论点为什么。这样你就不会看起来像个无知的人,并让别人有机会理解你的推理。当然,“其他人都在做”和“在 Google 上 .yml 的页面数比 .yaml 多”不是论据,它们只是关于错误或正确的项目受欢迎程度的统计数据(关于YAML 文件的扩展名)。您可以尝试证明某些项目很受欢迎,只是因为他们使用.yml 扩展而不是正确的.yaml,但我认为您将很难这样做。

    一些项目意识到(为时已晚)他们使用了不正确的扩展名(例如,最初docker-compose 使用了.yml,但在后来的版本中开始使用.yaml,尽管它们仍然支持.yml)。其他人似乎仍然对正确的扩展一无所知,例如 AppVeyor 2019 年初,但允许您为项目指定配置文件,包括扩展。这使您可以从您的脸上获取配置文件并为其提供适当的扩展名:我使用 .appveyor.yaml 而不是 appveyor.yml 来构建我的 YAML 解析器的 Windows 轮子(用于 Python)。


    另一方面:

    Symfony2 的 Yaml(原文如此!)组件实现了 YAML 1.2 版本规范中定义的选定subset of features

    因此,他们也使用推荐扩展的子集似乎很合适。

    【讨论】:

    • Symfony 现在使用 .yaml 格式并且也支持 .yml
    猜你喜欢
    • 1970-01-01
    • 2012-08-11
    • 2011-09-23
    • 1970-01-01
    • 2015-11-18
    • 2011-10-10
    • 2018-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多