current position:Home>Introduction to yaml Basics

Introduction to yaml Basics

2021-08-27 08:41:50 coderwxf

This is my participation 8 The fourth of the yuegengwen challenge 23 God , Check out the activity details :8 Yuegengwen challenge

YAML It's a kind of more humanized Data serialization language , It can be used with most current programming languages .

YAML Its grammar is simple and intuitive , The feature is to use indentation to express the hierarchy

YAML Most of them are used in Writing configuration files , As a general document .yml or .yaml For the suffix

Writing rules

  • Case sensitive
#  The following two are different 
name: klaus
Name: klaus
 Copy code 
  • Use indentation to indicate hierarchy
  • Indentation is not allowed Tab key , Only Spaces are allowed .
  • The number of Spaces indented is not important , As long as the elements of the same level are aligned to the left
# YAML
info:
  name: klaus
  firend:
    name: Alex
    age: 18
 Copy code 
  • Use # Notation ,
    • From this character to the end of the line , Will be ignored by the parser

    • That is to say yaml Only single line comments are supported

#  I am a comment 
 Copy code 
  • Support streaming style ( Flow style) The grammar of ( Wrap it in curly brackets , Separate with a comma and a space , similar JSON)
  • That is to say yaml Files are native and can support json Format
# yaml It can be parsed normally  json Content of format 
{
 "name": "Klaus",
 "age": 23
}
 Copy code 

We can this Test platform see yaml Compiled into js The result of the object or Use this Test platform see yaml Compiled as json Result

object

#  object  ---  Add a space after the colon 
#  Object key value pairs are represented by colons  key: value,
# key: value
name: Klaus  # => { name: 'Klaus' }

# ----------------------------------

#  Object nesting 

#  How to write it 1
info : 
 name: Klaus
# => { info: { name: 'Klaus' } }

#  How to write it 2
#  Support streaming style 
info : { name: Klaus } # => { info: { name: 'Klaus' } }

info: { 
  name: Klaus, 
  age: 23
} 
# => { info: { name: 'Klaus', age: 23 } }


#  How to write it 4 ---  The question mark plus a space represents a complex  key
?  
    - complexkey1
    - complexkey2
:
    - complexvalue1
    - complexvalue2
# => 'complexkey1,complexkey2': [ 'complexvalue1', 'complexvalue2' ] }
 Copy code 

Array

#  Array 
#  A group in block format (Block Format)( namely “ Dashes + Space ”) The first data forms an array 
 - Cat
 - Dog
 - Fish
# => [ 'Cat', 'Dog', 'Fish' ]

-
 - Cat
 - Dog
 - Fish
# => [ [ 'Cat', 'Dog', 'Fish' ] ]

#  Inline format is supported (Inline Format) To express ( Wrap... In square brackets , Comma with space , similar  JSON)
[ Cat, Dog, Fish ] # => [ 'Cat', 'Dog', 'Fish' ]

#  Just one -,  When you don't write array values , The default value is null
#  It can be said that yaml No, undefined, So it defaults to null Fill in 
- # => [ null ]
 Copy code 

Pure quantity

Pure quantity ( Literal ) Is the most basic , Nonseparable value

boolean: 
    - true  # true,True, TRUE  All can 
    - false  # false,False, FALSE  All can 

string:
  #  Special characters can be wrapped in double quotes or single quotes  ---  No quotation marks are recommended 
  - Klaus # => klaus, 'klaus', "Klaus"  All can 
  
  #  If there are special symbols , You need to wrap it in quotation marks 
  - 'name: Klaus' # => 'name: Klaus'
  
  - Klaus Wang # => 'Klaus Wang'
  
  # Strings can be split into multiple lines , Each line is converted to a space 
  - Klaus
    Wang # => 'Klaus Wang'

number:
  #  and js in number equally , It can be an integer , It can also be a floating-point number 
  - 10 # => 10, 0.1, 12.5  All can 
  
  #  Binary support , octal , Hexadecimal  ( The hexadecimal ID must be all lowercase   That is, it needs to be written as 0o, 0x, 0b ...)
  - 0b11000 # => 0o30, 0x18  All can 
  - 0B11000 # => '0B11000'  If the hexadecimal identifier is written in uppercase , Then it will be recognized as a string 
  
  #  Letters in hexadecimal other than hexadecimal identifiers are not case sensitive 
  - 0x1A # 0x1a  and  0x1A  The conversion result is the same 
  
  - 6.8523015e+5  # You can use scientific counting 

# yaml There is no undefined  This data type 

#  Use  ~  It means null
# null、Null、NULL  and  ~  It's all empty , If you don't specify a value, it's empty by default 
null: ~

#  When an object does not write a value , The default value is null
name: # => { name: null }

# Date must use ISO 8601 Format , namely  yyyy-MM-dd
date:
  - 2018-02-17
    
# Time use ISO 8601 Format , Use... Between time and date T Connect , Finally using + Represents the time zone 
datetime: 
  -  2018-02-17T15:02:31+08:00
 Copy code 

YAML Two exclamation marks are allowed ( Double sense exclamation mark + The target type ), Cast data types

e: !!str 123
f: !!str true
# => { e: '123', f: 'true' }
 Copy code 

Anchor point

defaults: &defaults #  Set anchor 
  adapter:  postgres
  host:     localhost
  
adapter: *defaults #  Use anchors 
 Copy code 
human: &base #  Add name is  base  The anchor point 
    body: 1
    hair: 999
    
singer:
    <<: *base #  quote  base  Anchor point , When instantiated, it expands automatically 
    skill: sing #  Add additional properties 
 Copy code 
- &showell Steven 
- Clark 
- Brian 
- Oren 
- *showell 
# => [ 'Steven', 'Clark', 'Brian', 'Oren', 'Steven' ]
 Copy code 

js-yaml

js-yaml It's a problem that can be resolved yml file , And convert it to JavaScript The library of objects

install

npm install js-yaml
 Copy code 

Use

const yaml = require('js-yaml');
const fs   = require('fs');

const doc = yaml.load(fs.readFileSync('./foo.yml', 'utf8'));
console.log(doc);
 Copy code 

copyright notice
author[coderwxf],Please bring the original link to reprint, thank you.
https://en.qdmana.com/2021/08/20210827084147187z.html

Random recommended