如何仅在页面未通过Thymeleaf渲染时才加载指定script元素?
实现方案
方案1:单标签覆盖写法(最推荐)
直接在同一个<script>标签上同时定义原生src和th:src属性即可:
<script th:src="url-A" src="url-B"></script>
- Thymeleaf渲染生产环境页面时,会自动用
th:src指定的url-A覆盖原生src属性值,最终输出的标签只有src="url-A" - 开发环境无Thymeleaf处理时,
th:src会被浏览器视为无效自定义属性直接忽略,页面会正常加载src指定的url-B
不需要额外的判断逻辑,代码最简洁,适配绝大多数常规场景。
方案2:双标签移除写法
如果两个场景的脚本除了src之外还有其他差异、必须分开写两个标签,可以给开发环境用的标签加上th:remove="all"属性:
<script th:src="url-A"></script> <script src="url-B" th:remove="all"></script>
- Thymeleaf渲染时,带
th:remove="all"的标签会被整体从输出的HTML中删除,最终页面只会保留url-A的脚本标签 - 开发环境无Thymeleaf处理时,
th:remove会被视为无效自定义属性忽略,页面正常加载url-B的脚本
内容的提问来源于stack exchange,提问作者62mkv
相关产品推荐
相关产品推荐

