我们有一个项目,我们希望在开发人员环境中使用require.js
以及我们未压缩的主app.js,所以我们在主要的Thymeleaf模板html中尝试了这个脚本声明:
<script
th:if="${@applicationProperties.getStage() == 'dev'}"
th:src="@{'/js/shared/lib/amd/require.min.js'}"
data-main="@{'/js/app.js'}">
</script>
在浏览器中观察网络流量显示,加载require.min.js有效,因此Thymeleaf会在th:src中预先设置上下文。
app.js显然也被传递给require,因为您可以看到浏览器正在尝试通过data-main加载您要传递的任何内容。
但是,使用@ {}将上下文添加到"/js/app.js"
会产生类似http://localhost:7000/myapp/@%7B'/js/app.js'%7D.js
的内容。所以我假设Thymeleaf没有处理data-main标签的值。
使用Thymeleaf的data:main
根本不起作用。
如果我们硬编码上下文路径,那么一切都很好:
data-main="/myapp/js/app.js">
那么,我们如何将上下文路径添加到脚本位置?
答案 0 :(得分:1)
解决方案是:
<script type="text/javascript"
th:if="${@applicationProperties.getStage() == 'dev'}"
th:src="@{'/js/shared/lib/amd/require.min.js'}"
th:attr="data-main=@{/js/app.js}">
</script>
注意,th:attr!
的值中没有撇号