前面学到的变量都是在cs后台的C#代码中设置变量的,然后在模板中使用,但是事实上,我们可以直接在模板中通过set指令来设置变量的。
一、变量定义#set()
两种方式定义变量:
方式1:后台C#/Java代码预先定义变量,模板页面读取;
方式2:直接在模板内部使用#set()定义变量(本课重点)
#set($name = "hello foxdevelop.com")
#set($okay = "common baby")
#set($nameokay = "$name|$okay")Code language: PHP (php)
#set(变量 = 值),支持字符串、数字、数组、对象属性、其他变量赋值- 弱类型,不需要声明变量类型
二、变量渲染两种写法和规范
1. 基础形式
$name:变量不存在时,原样输出字符串$name$!name:静默渲染,变量不存在时输出空白(推荐避免页面出现$xxx文本)- 推荐标准写法:
${name}(大括号隔离变量边界)
2. 边界问题示例
#set($name = "hello")
$namehello × 引擎会识别变量名为 $namehello,找不到变量
${name}hello √ 正确,引擎识别变量$name,后面拼接hello文本Code language: PHP (php)
三、单行注释 ##
## 这里表示注释,最终不会显示
#set($name = "test") ## 行尾注释也支持Code language: PHP (php)
- 注释内容不会输出到最终渲染页面;
- 浏览器查看网页源代码,也看不到注释文本(模板引擎渲染阶段直接丢弃注释)。
四、#set 支持多种赋值类型
## 字符串赋值
#set($name = "hello world")
## 将变量赋值给另一个变量
#set($obj= $name)
## 对象属性赋值
#set($obj.Friend = "monica")
#set($obj.Blame = $whitehouse.Leak)
## 调用方法,将返回值赋值
#set($obj.Plan = $spindoctor.weave($web))
## 数字赋值
#set($obj.Number = 123)
## 数组赋值
#set($obj.Say = ["Not", $my, "fault"])Code language: PHP (php)
五、变量不存在的特殊规则
$sadfsdfsdCode language: PHP (php)
当模板引擎找不到该变量时:
- 普通写法
$sadfsdfsd:直接原样输出文本$sadfsdfsd - 如果写成
$!sadfsdfsd:变量不存在,输出空白字符串