您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    大少数顺序员都不知道的6个YAML功用
    时间:2021-03-01 21:03 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

     

    大少数顺序员都不知道的6个YAML功用

    提升您的YAML知识以编写更明晰的YAML文件

    大少数顺序员都不知道的6个YAML功用

    YAML是一种常用于数据序列化的文件格式。有少量运用YAML文件停止配置的项目,例如Docker-compose,pre-commit,TravisCI,AWS Cloudformation,ESLint,Kubernetes,Ansible等。了解YAML的功用可以协助您完成一切这些功用。

    让我们先引见一下基础知识:YAML是JSON(源)的超集。每个有效的JSON文件也是一个有效的YAML文件。这意味着您拥有一切希冀的类型:整数,浮点数,字符串,布尔值,空值。以及序列和图。依据您的编程言语,您能够说“ array”或“ list”而不是序列,而说“ dictionary”而不是map。

    通常看起来像这样:

    mysql: 

      host: localhost 

      user: root 

      password: something 

    preprocessing_queue:  # Line comments are available! 

      - name: preprocessing.scale_and_center 

        width: 32 

        height: 32 

      - preprocessing.dot_reduction 

    use_anonymous: true 

    等效符号

    YAML有很多等效的编写办法:

    list_by_dash: 

      - foo 

      - bar 

    list_by_square_bracets: [foo, bar] 

    map_by_indentation: 

      foo: bar 

      bar: baz 

    map_by_curly_braces: {foo: bar, bar: baz} 

    string_no_quotes: Monty Python 

    string_double_quotes: "Monty Python" 

    string_single_quotes: 'Monty Python' 

    bool_english: yes 

    bool_english_no: no 

    bool_python: True 

    bool_json: true 

    这里有些正告:

    language: no # ISO 639-1 code for the Norwegian language 

    此否被解释为false。您需求输入“ no”或“ no”。

    通常,我建议像布尔值JSON一样运用true和false,但是YAML支持11种写布尔值的办法。假设您想对字符串运用引号,我也将像JSON一样运用“。您依然需求记住” no“,但是至少该文件看起来对YAML初学者更熟习。

    正如汤姆·里奇福德(Tom Ritchford)所指出的,还有更多相似的风险案例:

    013映射到11,由于前导零触发八进制表示法

    4:30映射到270。Max Werner Kaul-Gothe和Niklas Baumstark通知我,这被自动转换为分钟(或秒?),由于它被解释为继续时间:4 * 60 + 30 = 270。幽默的是,这种形式依然可以在1:1:1:1:1:1:1:1:4:30的状况下“任务”。

    长字符串

    disclaimer: > 

        Lorem ipsum dolor sit amet, consectetur adipiscing elit. 

        In nec urna pellentesque, imperdiet urna vitae, hendrerit 

        odio. Donec porta aliquet laoreet. Sed viverra tempus fringilla. 

    这等效于以下JSON(为便于阅读,添加了换行符;请疏忽它们):

    {"disclaimer": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. In nec urna pellentesque, imperdiet urna vitae, hendrerit odio. Donec porta aliquet laoreet. Sed viverra tempus fringilla."}

    多行字符串

    mail_signature: | 

          Martin Thoma 

          Tel. +49 123 4567 

    这等效于JSON:

    {"mail_signature": "Martin Thoma\nTel. +49 123 4567"}

    请留意如何疏忽前导空格。第一行(“ Martin Thoma”)确定疏忽的前导空白的数量。

    email: &emailAddress "info@example.de" 

    id: *emailAddress 

    这等效于以下JSON:

    {"email": "info@example.de", "id": "info@example.de"}

    &定义了一个变量emailAddress,其值为“ info@example.de。然后,*表示紧随其后的是变量名。

    您可以对映射执行相反的操作:

    foo: &default_settings 

      db: 

        host: localhost 

        name: main_db 

        port: 1337 

      email: 

        admin: admin@example.com 

    prod: *default_settings 

    dev: *default_settings 

    这使:

    "dev": { "db": {"host"

                      "localhost"

    (责任编辑:admin)