最近转到java组后开始接触thymeleaf和freenark这两种主流的模板引擎,其中thymeleaf还是springboot推荐的模板引擎,但是从头到尾看了一篇,也开始尝试用于项目中。
但是thymeleaf还是springboot,它跟asp.net的模板引擎razor比起来,处于幼儿园的水平。其对母板页的理解是有偏差的,razor的模板,就是真的母板,所有公用东西都在母板上,应用页面套用这个母板,只须再定义自己的个性化内容即可,而thymeleaf的所谓模板,不是母板,而是片段集合,公共东西,做成一个个片段,由应用页按需组合起来使用。
razor就像是一个完整的框架,我们使用这个框架,好多东西都自动就具备了,net的razor,调用静态方法,调用service方法,申明变量,就是一个@{ },全部搞定。
而thymeleaf则是一个公用类库,开发人员按需调用,使用起来,也是很不方便,各种奇形怪状的标记和语法。我们要记住的东西很多。
1、在thymeleaf中定义变量
所有人都知道,变量可以从后端的控制器传过来。问题是,为什么这个变量一定要在控制器里定义再传过来?太夸张了吧。这个只跟视图有关的东西,应该就在视图(页面)上自己定义啊。
thymeleaf怎么定义呢?这样子定义:
th:with="变量=值"
怎么使用呢,看下面的例子
看见了吧,本例子中,变量docks的声明,要用th:with,然后还要放在一个
2、使用所谓内置对象
thymeleaf有一些所谓内置对象,dates是其中一种。好像只是用来控制格式。其他还有什么list之类,不知道干什么的。
输出一个日期:
#dates,记住了吗?要用“#”号喔。
3、使用静态方法或变量
比如说,你想在thymeleaf里用一个枚举
一定要用T()将它包含起来。否则会报错。thymeleaf作为模板引擎,是真的烂透了。
那么看看razor的使用方式
变量
@{
int age = 18; //申明变量
}
Razor变量
razor变量和html脚本结合演示
开始逻辑判断
@{
if (age > 18)
{
已经成年
}
else
{
未成年
}
}
您当前使用的Cms是:@(name)
循环
@for (var i = 10; i < 21; i++)
{
Line @i
}
逻辑
@{
var price=25;
}
@if (price>=30)
{
The price is high.
}
else if (price>20 && price<30)
{
The price is OK.
}
else
{
The price is low.
}
调用service中方法和静态变量,并放到html便签中。
@{
var userlist=new userService().getList(); //获取对象方法
var str=stringUtlis.Trim("去除空格 "); //调用静态方法去除空格
}
@str@(foreach(var item in userlist){
- 用户名: @item.username
- 年龄:@item.age
}
看到对比了吧,没有对比就没有伤害,实在不明白,net有很多优秀的东西,java为什么就不懂借鉴一下。