日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

背景

日常工作中,項目編程免不了需要使用配置文件,早期yaml出現之前,大部分配置文件采用xml形式,但是以xml格式儲存的數據要比以其他格式(如json、yaml)儲存占有的空間要大得多,因為它除了要保存原始數據外還需要保存元數據進行描述。不管你是否相信,筆者曾經在項目中看到xml文件中大量冗余的標簽,真的是眼花繚亂,幸運的是,當看見yaml的那一刻,筆者真實地感受到上帝來解救處于水深火熱中的那一幫經常與配置文件打交道的程序員了。本文筆者將根據在項目中對yaml的應用簡單介紹yaml這樣一種讓愛程序員愛不釋手的數據串行化格式。

簡介

與json、xml一樣,yaml也是一種通用的數據串行化格式,其設計目標就是方便開發人員的讀寫,yaml可以表示對象、數組、純量三種數據格式。

yaml規范

  • 大小寫敏感
  • 使用縮進表示層級
  • 縮進的空格數不重要,但是相同層級的元素左側需要對齊

對象

鍵值對組合,又稱哈希,對象的一組鍵值對用冒號分割,注意冒號后面必須有空格

debug: true

轉換為JAVAScript如下

{"debug":true}

也可以將所有鍵值對寫在一個行內對象

db: {user: root, password: pass123}

轉換為JavaScript如下

{"db":{"user":"root", "password":"pass123"}}

數組

一組按次序排列的值,又稱序列,數組的每個元素都以連詞線“-”開頭,連詞線“-”后面必須有空格,如下

fruits:
 - Apple
 - pear
 - banana

轉換為JavaScript后如下

{"fruits": ["apple", "pear", "banana"]}

也可以表示多維數組,如下

fruitsGroup:
 - 
  - apple
  - banana
 -
  - pear

轉換為JavaScript如下

{"fruitsGroup": [["apple", "banana"], ["pear"]]}

與對象一樣,數組也可以使用行內表示法,如下

fruits: [apple, banana, pear]

轉換為JavaScript如下

{"fruits":["apple", "banana", "pear"]}

復合結構

對象和數組可以結合使用,構成復合結構。如對象數組,每個對象的第一個屬性以連詞線“-”開頭,連詞線“-”后面必須要有空格

fruits:
 - name: apple
   color: red
 - name: banana
   color: yellow

轉換成JavaScript如下

{"fruits":[{"name":"apple", "color":"red"}, {"name":"banana", "color":"yellow"}]}

對象數組也可以使用行內表示法,如下

fruits: [{"name":"apple", "color":"red"}, {"name":"banana", "color":"yellow"}]

轉換為JavaScript如下

{"fruits":[{"name":"apple", "color":"red"}, {"name":"banana", "color":"yellow"}]}

純量

純量是單獨的、最基本的、不可再分的值,包括數值類型(整數、浮點數)、布爾類型、日期時間類型、null類型,字符串類型。

數值直接以字面量的形式表示,如下

weight: 1.0

轉換為JavaScript如下

{"weight": 1.0}

布爾值包括true與false,如下

enabled: true
disabled: false

轉換為JavaScript如下

{"enabled":true, "disabled":false}

null用~表示,如下

name: ~

轉換為JavaScript如下

{"name": null}

日期、時間采用ISO8601格式,如下

date: 2021-06-18T18:00:00+08:00
date1: 2020-06-18

轉換為JavaScript如下

{"date": new Date('2021-06-18T18:00:00+08:00'), "date1":new Date('2020-06-18')}

字符串

字符串默認不使用引號,如下

profile: test

如果字符串中包含特殊字符或空格,需要放在引號之中,其中單引號不會對特殊字符轉義,雙引號會對特殊字符轉義,如下

c1: '這是一個n測試'
c2: "這是一個n測試"

轉換為JavaScript如下

{"c1":"這是一個\n測試", "c2":"這是一個n測試"}

單引號之中如果還有單引號,需要連續使用兩個單引號轉義,如下

content: 'that''s all right'

轉換為JavaScript如下

{"content": "that's all right"}

字符串可以寫成多行,從第二行開始,每一行必須以空格縮進,換行會被轉換成空格,如下

content: this
 is
 test

轉換為JavaScript如下

{"content": "this is test"}

多行字符串可以使用"|"保留換行符,或者使用">"折疊換行符,如下

c1: |
 thank
 you
  
c2: >
 thank
 you
  

轉換成JavaScript如下

{'c1': 'thanknyoun', 'c2': 'thank youn'}

"|"后面使用"+"可以保留字符串末尾的換行(默認只保留字符串末尾的第一個換行),"-"可以刪除字符串末尾的換行,如下

c1: |+
 thank
 you
  
c2: |-
 thank
 you
  

轉換成JavaScript如下

{'c1': 'thanknyounn', 'c2': 'thank you'}

引用

可以使用錨點"&"和別名"*"來使用yaml中的引用功能,其中"&"用于定義錨點,別名"*"用來引用錨點,如下,"<<"表示合并到當前數據

common: &common
 user: zhangsan
 password: 123456
test:
 profile: test
 <<: *common
dev:
 profile: dev
 <<: *common

等價于下面

common: &common
 user: zhangsan
 password: 123456
test:
 profile: test
 user: zhangsan
 password: 123456
dev:
 profile: dev
 user: zhangsan
 password: 123456

類似的,純量也可以使用錨點,如下

- &fruit apple
- banana
- pear
- *fruit

轉換為JavaScript如下

['apple', 'banana', 'pear', 'apple']

總結

從上面的案例可以看出yaml相對于傳統的xml更簡潔,可讀性更強,目前筆者所在的項目基本全部采用yaml格式的配置文件,看起來清爽多了。關于yaml的相關用法,讀者朋友如果有更多的認識,歡迎文章下方評論,共同學習共同進步。

分享到:
標簽:yaml
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定