0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

YAML是什么?

汽車電子技術(shù) ? 來源:碼農(nóng)與軟件時(shí)代 ? 作者:碼農(nóng)與軟件時(shí)代 ? 2023-02-15 09:53 ? 次閱讀

一、YAML是什么?

YAML 首次發(fā)表于2001 年,其官方文檔給出的描述:

“YAML Ain’t Markup Language” (abbreviated YAML) is a data serialization language designed to be human-friendly and work well with modern programming languages for common everyday tasks.

“YAML 不是標(biāo)記語言 ”(縮寫為 YAML)是一種 數(shù)據(jù)序列化語言 ,旨在 對(duì)人類友好 ,并且可以與現(xiàn)代編程語言很好地配合完成常見的 日常任務(wù) 。

不是標(biāo)記語言 誰是標(biāo)記語言,XML就是。XML被設(shè)計(jì)為與標(biāo)準(zhǔn)通用標(biāo)記語言 (SGML) 向后兼容,SGML 旨在支持結(jié)構(gòu)化文檔。了解更多XML知識(shí):XML是什么與為什么

數(shù)據(jù)序列化語言 使用yaml承載來數(shù)據(jù),并在程序之間傳遞,這部分職責(zé)與XML、JSON相似。

對(duì)人類友好 使得非專業(yè)人士也能輕松閱讀。

編程語言日常任務(wù) 程序本身的屬性、依賴關(guān)系表達(dá),程序運(yùn)行過程產(chǎn)生的數(shù)據(jù),程序之間數(shù)據(jù)的傳遞等這些任務(wù),都要以一種形態(tài)表達(dá)出來,常見的有:配置文件、日志文件、進(jìn)程間消息傳遞、跨語言數(shù)據(jù)共享等等。

二、YAML為什么產(chǎn)生?

YAML的產(chǎn)生是為了:提高人們對(duì)“數(shù)據(jù)交換格式”的可讀性;數(shù)據(jù)可在編程語言之間交換。

而JSON的產(chǎn)生是為了:簡(jiǎn)單性和通用性。JSON的生成和解析很簡(jiǎn)單,但人類的可讀性相對(duì)差些。

三、YAML長(zhǎng)啥樣?

先來直觀地看看YAML文件(docker-compose),不求甚解。

version: "3.7"

services:
  app:
    image: node:12-alpine
    command: sh -c "yarn install && yarn run dev"
    ports:
      - 3000:3000
    working_dir: /app
    volumes:
      - ./:/app
    environment:
      MYSQL_HOST: mysql
      MYSQL_USER: root
      MYSQL_PASSWORD: secret
      MYSQL_DB: todos

  mysql:
    image: mysql:5.7
    volumes:
      - todo-mysql-data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: secret
      MYSQL_DATABASE: todos

volumes:
  todo-mysql-data:

四、YAML文件怎么看?

  1. 了解YAML約定與語法

(1)約定

大小寫敏感;

層級(jí)關(guān)系使用縮進(jìn)來表示(用空格,不用TAB鍵;敲幾個(gè)空格不限,但相同層級(jí)左側(cè)要對(duì)齊);

注釋使用 # , # 前帶空格;

內(nèi)容塊:起始使用 --- ;結(jié)束使用 ... ;

重復(fù)內(nèi)容的定義:錨點(diǎn)標(biāo)簽&表達(dá)被引用的內(nèi)容,*表達(dá)引用。

(2)語法

總的來說,支持的基本數(shù)據(jù)結(jié)構(gòu): 對(duì)象 、列表以及純量 。

對(duì)象: 也稱字典,使用key:value來表達(dá)。

表達(dá)方式一:

Key1:
  key11: value11
  Key12: value12

表達(dá)方式二:

Key1: { key11: value11, child-key12: value12 }

列表 也稱序列、數(shù)組。

表達(dá)方式一:

values:
  - value1
  - value2
  - value3

表達(dá)方式二:

values: [value1, value2, value3]

純量 Null、布爾、字符串、整數(shù)、浮點(diǎn)數(shù)、日期和時(shí)間等基本數(shù)據(jù)類型。

  1. 領(lǐng)域YAML規(guī)范約定

不同領(lǐng)域都有各自的YAML規(guī)范約定。

第三部分的YAML文件是docker-compose,其規(guī)范約定在Compose Specification中,詳細(xì)內(nèi)容參見鏈接3

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    很實(shí)用的PyYAML使用技巧

    YAML 是一個(gè)被廣泛使用的數(shù)據(jù)序列化和配置語言,作為一個(gè)開發(fā)者,總是不免和它打交道。但處理 YAML 文檔,尤其是使用 PyYAML 的過程總是非常痛苦。
    發(fā)表于 12-01 09:41 ?397次閱讀

    SSM框架-SpringBoot-07-yaml格式

    springSpringMVC
    電子學(xué)習(xí)
    發(fā)布于 :2023年01月07日 20:59:56

    如何將udev規(guī)則和/或netplan config.yaml文件添加到Ubuntu devel rfs?

    我找不到任何將網(wǎng)絡(luò)相關(guān)內(nèi)容(如 netplan config.yaml 或 udev 規(guī)則)更新到 flex-builder 的 Ubuntu 開發(fā)發(fā)行版的示例。有沒有一種簡(jiǎn)單的方法可以做到這一點(diǎn)
    發(fā)表于 03-24 07:15

    xml和YAML文件的寫入_OpenCV3編程入門

    《OpenCV3編程入門》書本配套源代碼:xml和YAML文件的寫入
    發(fā)表于 06-06 15:20 ?6次下載

    xml和YAML文件的讀取_源代碼

    《OpenCV3編程入門》書本配套源代碼:xml和YAML文件的讀取
    發(fā)表于 06-06 15:20 ?6次下載

    OpenCV3編程入門-源碼例程全集-xml和YAML文件的讀取

    OpenCV3編程入門-源碼例程全集-xml和YAML文件的讀取
    發(fā)表于 09-18 16:38 ?0次下載

    OpenCV3編程入門-源碼例程全集-xml和YAML文件的寫入

    OpenCV3編程入門-源碼例程全集-xml和YAML文件的寫入
    發(fā)表于 09-18 16:38 ?0次下載

    xjsonkits超輕量級(jí)JSON/xml/YAML解析門面API

    ./oschina_soft/gitee-xjsonkit.zip
    發(fā)表于 06-14 10:38 ?1次下載
    xjsonkits超輕量級(jí)JSON/xml/<b class='flag-5'>YAML</b>解析門面API

    Yams YAML解析器

    ./oschina_soft/Yams.zip
    發(fā)表于 06-16 10:18 ?0次下載
    Yams <b class='flag-5'>YAML</b>解析器

    Taskfile的安裝及使用

    Taskfile 通過 yaml 來描述各種執(zhí)行任務(wù), 其核心采用 go 編寫; 相較于 Makefile 的 tab 分割和 bash 結(jié)合語法 Taskfile 顯得更加現(xiàn)代化和易
    的頭像 發(fā)表于 07-18 16:22 ?1335次閱讀

    學(xué)習(xí)Python值得收藏的小技巧

    YAML 是 “YAML 不是一種標(biāo)記語言”的外語縮寫。它是一個(gè)數(shù)據(jù)格式語言,是 JSON 的父集。和 JSON 不同的是,它可以存儲(chǔ)更復(fù)雜的對(duì)象,并且可以引用自身的元素。你還可以寫注釋,這讓 YAML 特別適合于書寫配置文件。
    發(fā)表于 12-05 11:37 ?199次閱讀

    怎樣在YAML中添加注釋

    AML 廣泛用于為容器化應(yīng)用程序編寫配置文件。解釋特定行或者忽略錯(cuò)誤行,都需要用到注釋。
    的頭像 發(fā)表于 01-30 16:02 ?2233次閱讀
    怎樣在<b class='flag-5'>YAML</b>中添加注釋

    探討使用YAML文件定義Kubernetes應(yīng)用程序

    Kubernetes已經(jīng)占據(jù)如何管理集容器化應(yīng)用程序的核心位置。因此,存在許多定義Kubernetes應(yīng)用程序的約定文件格式,包括YAML、JSON、INI等。
    的頭像 發(fā)表于 04-20 10:03 ?607次閱讀

    OpenCV中YAML配置文件讀寫使用演示

    我們?cè)谧鯫penCV開發(fā)的時(shí)候經(jīng)常需要把算法在一些場(chǎng)景下的調(diào)試好的參數(shù)作為默認(rèn)值保存然后自動(dòng)加載,然后在默認(rèn)值的基礎(chǔ)上根據(jù)需要適度調(diào)整。OpenCV中支持把參數(shù)保存為TXT格式的YAML文件,實(shí)現(xiàn)類似XML與JSON的參數(shù)文件讀寫,主要是基于FileStorage這個(gè)類完成。
    的頭像 發(fā)表于 08-01 11:14 ?830次閱讀
    OpenCV中<b class='flag-5'>YAML</b>配置文件讀寫使用演示

    ROS編寫參數(shù)配置文件示例程序

    我們?cè)O(shè)定的參數(shù)對(duì)應(yīng)的執(zhí)行文件main.launch。 這些需要設(shè)定的參數(shù),存放在user_config.yaml、pedestrians_config.yaml、obstacles
    的頭像 發(fā)表于 11-26 17:35 ?1647次閱讀
    ROS編寫參數(shù)配置文件示例程序