Skip to content

13.4 文本型解析级注释块:代码移除

与「仅原型注释块」的机制类似,三种文本模板模式(TEXT、JAVASCRIPT、CSS)都支持通过特殊标记 /*[- *//* -]*/ 包裹代码——Thymeleaf 处理模板时会完全移除包裹的内容,仅保留外部代码;而静态预览时(直接打开文件),这些标记是合法的注释,内部代码会正常显示/执行。

javascript
var x = 23;

/*[- */
// 这段代码仅静态预览时执行,动态处理时被移除
var msg  = "This is shown only when executed statically!";
/* -]*/

var f = function() {
    // ... 业务逻辑
};
  • 静态预览var msg = ... 生效(作为普通 JS 代码执行);
  • Thymeleaf 处理后:包裹的代码被完全移除

或者 TEXT 模板模式:

text
...
/*[- Note the user is obtained from the session, which must exist -]*/
Welcome [(${session.user.name})]!
...
  • 静态预览var msg = ... 生效(作为普通 JS 代码执行);
  • Thymeleaf 处理后:包裹的代码被完全移除,输出如下:
javascript
var x = 23;

var f = function() {
    // ... 业务逻辑
};
  • 静态预览:注释 Note the user... 可见(作为文本注释);
  • Thymeleaf 处理后:该注释被完全移除,仅保留 Welcome [(${session.user.name})]! 并解析表达式。

核心解析

1. 语法与核心规则

  • 通用模式:适用于 TEXT、JAVASCRIPT、CSS 所有文本模板模式(区别于仅原型注释块仅支持 JS/CSS);
  • 标记格式:必须严格遵循 /*[- */ 要移除的代码 /* -]*/,开头的 /*[- */ 和结尾的 /* -]*/ 是固定标记,不可拆分;
  • 处理逻辑:Thymeleaf 在解析模板阶段就删除标记内的所有内容,不会参与后续渲染,无性能损耗;
  • 静态原型特性:静态打开文件时,/*[- *///* -]*/ 是合法的 JS/CSS/文本注释,内部代码/文本会正常显示/执行——实现「静态有模拟内容,动态无冗余代码」。

2. 典型使用场景

  • 静态模拟代码移除:在独立 JS 文件中添加静态预览用的模拟数据,动态处理时自动移除:
    javascript
    // 动态逻辑:依赖后端用户数据
    var username = /*[[${session.user.name}]]*/ null;
    /*[- */
    // 静态模拟数据:动态处理时被移除
    var username = "Guest User";
    /* -]*/
  • 文本模板的注释清理:在 TEXT 模式(如邮件模板)中添加开发注释,动态渲染时自动删除,避免注释出现在最终文本中:
    text
    /*[- 以下内容为订单详情,需确保 order 对象非空 -]*/
    Order ID: [(${order.id})]
    Total: [(${order.total})] EUR
  • CSS 静态样式移除:静态预览时用模拟样式,动态渲染时移除:
    css
    .container {
      max-width: 1200px;
    }
    /*[- */
    /* 静态预览用的临时样式,动态处理时移除 */
    .container {
      border: 1px dashed #ccc;
    }
    /* -]*/

3. 与文本型仅原型注释块的对比

类型语法格式适用模式核心逻辑
解析级注释块/*[- */.../* -]*/TEXT/JS/CSS静态显示 → 动态移除(清理冗余)
仅原型注释块/*[+...+]*/JS/CSS静态隐藏 → 动态解封(追加代码)

总结

  1. /*[- */.../* -]*/ 是所有文本模板模式通用的解析级注释块,Thymeleaf 处理时会完全移除包裹内容,静态预览时内容正常显示/执行;
  2. 核心价值:为文本模板(尤其是独立 .js/.css/.txt 文件)添加「仅静态生效」的模拟代码/注释,动态渲染时自动清理,不残留冗余内容;
  3. /*[+...+]*/ 配合使用,可实现「静态有模拟逻辑,动态有真实逻辑」的原生模板效果。