1. yaml是什么
YAML是一个类似 XML、JSON 的标记性语言。YAML 强调以数据为中心,并不是以标识语言为重点
2. 规范
- 大小写敏感
- 缩进代表层级,使用空格,默认2个空格(flutter工具做了处理,tab也可以)
- # 表示注释内容
: 表示键值对,注意后面要空格
{} 表示键值表
- 表示列表,注意后面要空格
[] 表示数组,注意每项之间有空格
? 表示复杂的键
# 键值对,表示app的名字为flutter_app
name: flutter_app
description: A new Flutter application.
# 环境,flutter的sdk版本在此之间
environment:
sdk: ">=2.0.0-dev.68.0 <3.0.0"
# 依赖库
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^0.1.2
event_bus: ^1.0.1
shared_preferences: "^0.4.3"
flutter_refresh: ^0.0.1
#测试环境的依赖库
dev_dependencies:
flutter_test:
sdk: flutter
flutter:
#使用Material图标
uses-material-design: true
#assets文件
assets:
- images/head.png
- images/1.gif
#字体样式
fonts:
#family与fonts是一个整体,列表的一项
- family: Schyler
fonts:
- asset: fonts/Schyler-Regular.ttf
- asset: fonts/Schyler-Italic.ttf
style: italic
- family: Trajan Pro
fonts:
- asset: fonts/TrajanPro.ttf
- asset: fonts/TrajanPro_Bold.ttf
weight: 700
-
可转化为[]
,:
也可以转化为{}
,转化后类似json
dependencies: {flutter: {sdk: flutter}, cupertino_icons: ^0.1.2, event_bus: ^1.0.1, shared_preferences: "^0.4.3", flutter_refresh: ^0.0.1}
assets: [images/head.png, images/1.gif]
很明显没有之前的好看,而且不好扩展
3. 字符串操作
a.字符串
str0: '我是字符串'
#双引号不会对特殊字符转义
str1: "It's a test"
#单引号中单引号的字符,需要转义
str2: 'It''s a test'
#~是空的意思
str3: ~
# 两个!表示强制转换,!!str 表示强制转为str
str4: !!str true
str5: 也可以不用引号引起来,厉害不
str6: '有空格 或者 特殊字符* 就必须放在引号中了'
str7: <p style="color:red">Hello world<p>
转为json:
{ str0: '我是字符串',
str1: 'It\'s a test',
str2: 'It\'s a test',
str3: null,
str4: 'true',
str5: '也可以不用引号引起来,厉害不',
str6: '有空格 或者 特殊字符* 就必须放在引号中了',
str7: '<p style="color:red">Hello world<p>' }
b.换行
str8: #每行用空格代替换行符,每行行尾空格无效
第一行
第二行
第三行
str9: | #每行都有换行符
第一行
第二行
第三行
str10: > #末尾有换行符,中间用空格代替换行符
第一行
第二行
第三行
str11: |- #末尾去除换行符
第一行
第二行
第三行
str12: |+ #末尾添加换行符
第一行
第二行
第三行
转为json:
{ str8: '第一行 第二行 第三行',
str9: '第一行 \n第二行 \n第三行 \n',
str10: '第一行 第二行 第三行 \n',
str11: '第一行 \n第二行 \n第三行 ',
str12: '第一行 \n第二行 \n第三行 \n' }