正如在上一章中所看到的,JavaScript 和 CSS 内联提供了在 JavaScript / CSS 注释中包含内联表达式的可能性,
比如。
... var username = /*[[${session.user.name}]]*/ "Sebastian Lychee"; ...
…这是有效的 JavaScript,一旦执行,可能会如下所示:
... var username = "John Apricot"; ...
实际上,将内联表达式封装在注释中的相同技巧可以用于整个文本模式语法:
/*[# th:if="${user.admin}"]*/ alert('Welcome admin'); /*[/]*/
当模板静态打开时(因为它是100%有效的 JavaScript),以及当用户是管理员时运行模板时,将显示上述代码中的警告弹框。相当于:
[# th:if="${user.admin}"] alert('Welcome admin'); [/]
…这实际上是在模板解析期间将初始版本转换为的代码。
但是请注意,在注释中包裹元素不会像内联输出表达式那样清理它们所在的行(向右直到找到一个分号 “;”),这种行为只保留给内联输出表达式。
因此,Thymeleaf 3.0 允许以自然模板的形式开发复杂的 JavaScript 脚本和 CSS 样式表,无论是作为原型还是作为工作模板都有效。