(二)spring-boot教程,开发个人博客:freemarker基础语法介绍

avatar

既然开发网站,肯定要用到模板,这个博客用的是 freemarker ,所以第二节来介绍一下freemarker的简单用法

基础语法

掌握下面几个语法的用法,就会用freemarker模板了

  • if
  • list
  • assign
  • include
  • macro

if

if,做判断用的,比如判断用户是否存在

<#if user??>
  // do stuff
</#if>

<#if user??>
  // do stuff
<#elseif xxx>
  // ...
</#if>

<#if user??>
  // do stuff
<#else>
  //...
</#if>

两个 ?? 表示是否存在的意思

list

list做循环用的,比如遍历一个列表

<#list collection as element>
  
</#list>
  • collection 表示数组或集合
  • element 表示数组或集合中的某一项

<#list [1,2,3,4,5] as element>
  ${element}
</#list>

assign

表示在freemarker模板内新建变量,如

<#assign list=[1,2,3,4,5]/>

<#list list as element>
  ${element}
</#list>

include

引入其它页面到当前页面里使用,当前页面里的变量可以共用

语法

<#include "./detail.ftl"/>

例如,用户详情页我想把它分开,用户信息放在另一个页面上,然后在profile.ftl里通过include引入来展示

添加一个页面 user/detail.ftl 写上如下内容

hello ${username}

在profile.ftl页面里引入 detail.ftl 页面

<#include "./detail.ftl"/>

浏览器访问 http://localhost:8080/user/world

macro

创建freemarker模板页面,一个网站页面肯定会有些重合的部分,比如页头,页尾,如果把这些重复的元素提出来,会很方便维护,macro就是做这事的

语法是

<#macro layout_name>
  <#nested>
</#macro>
  • layout_name 是模板的名字
  • nested 表示另一个页面引用这个模板后,另一个页面的内容就会填充在模板的这个位置

新建一个layout.ftl

<#macro html>
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <style>
    body {
      color: #fff;
      background-color: green;
    }
  </style>
</head>
<body>
  <#nested>
</body>
</html>
</#macro>

这里我建了个模板页面,这个模板页面名字是 html, 相应的给它加了个全局的样式

打开上一节写的 profile.ftl 文件,修改一下

<#include "../layout/layout.ftl"/>
<@html>
hello ${username}
</@html>

再次访问 http://localhost:8080/user/world

可以看到,页面背景色生效了,这样以后开发页面的公共部分都可以放在layout.ftl页面里了

其它

freemarker里取值用的是 ${var} 的方式,但是当 var 为null的时候,就会报错,这时可以用一个默认值来代替 ${var!defaultValue} defaultValue 就是当var为null的时候替换它显示出来的值,比如 ${user.username!"guest"} 意思是当取用户名不存在的时候,就用guest来显示在页面上,如果为null的话页面上什么都不想显示,还可以写成 ${user.username!} 这样当username为null的时候,页面上什么都不会显示出来,而且页面也不会报错

freemarker还支持在程序里自定义标签来使用,后面章节会介绍到

总结

理解了以上语法,基本就可以开发一些简单的网站页面了,后面我们来实战

如果想了解更多freemarker语法知识,可以查看官方文档 https://freemarker.apache.org/docs/dgui_quickstart.html

0 条评论

目前还没有回答,快来帮帮TA吧!

添加一条评论 请尽量发布对他人有帮助的评论

登录后可发布评论

登录 | Github登录