jade变量声明和数据传递
声明一个变量
- var course = 'jade';
取得一个变量
#{course}
大括号里面写入变量命,前面加个#号就可以取得变量
在括号里面可以进行诸多都运行操作,比如大小写
#{course.toUpperCase()}
title #{course.toUpperCase()} study => <title>JADE study</title>
现在是把变量声明到页面里面,但正常开发的时候我们一般是把后台拿到的数据通过变量的方式传递给这个模板,在模板里面很少直接去定义一个固定的值,除非是为了一些值的类型转换,本地化,或者逻辑上的方便使用,从外面传,我们先搞最粗暴的方式,
从命令行传
jade index.jade -P -w --obj '{"course":"jade"}'
后面跟着一个--obj,再后面跟这个obj的,然后在文档里面直接使用
title #{course.toUpperCase()} study => <title>JADE study</title>
这样,前面的变量不声明,这样的效果是跟前面一模一样的
这里就会有一个问题,我如果从命令行里面传入一个变量,我又在文档里面声明了一个变量,他两如果是同名的话,那到底喧嚷的是哪个值呢
命令行是这样
jade index.jade -P -w --obj '{"course":"jade1"}'
文档是这样
- var course = 'jade2'
title #{course.toUpperCase()} study
最后得到的值是这样
<title>JADE2 study</title>
说明优先读取文档里面的值
json文件的方式
index.json
{
"course":"jade"
}
命令行里面改一下
jade index.jade -P -w -O index.json
得到的值
<title>JADE study</title>
看到后面得到的值是正确的
为什么要创建json文件呢,如果说要传的变量很多,那命令行这种方式就显得比较笨拙