是否可以将 FreeMarker 中的组件用作 f.e。在 Angular?
Is it possible to use components in FreeMarker as f.e. in Angular?
我的 Java Spring 引导应用程序中有很多不同的 FreeMarker 模板,它们都共享某些元素,例如页眉和页脚。是否可以像 Angular 或 React 中那样构建可重用组件?
我考虑过在 Java 中将元素创建为对象,然后像导入文本一样将它们导入 FreeMarker,但我认为可能有更优雅的解决方案。
FreeMarker 支持 import and include.
但是:
Using include directive is almost always a bad practice, and you should consider using the import directive instead!
我继续使用 import,更多关于何时使用 import here.
使用 import
在 FreeMarker 中构建组件
如果你想f.e。导入一个 header 组件,您将创建一个 components.ftl 文件并在其中创建一个 macro。
components.ftl:
<#macro header>
<header>
<p>My first FreeMarker macro component header</p>
</header>
</#macro>
您现在可以将 header 宏导入您的 FreeMarker 模板:
template.ftl
<#import "template-components/components.ftl" as components>
...
<@components.header/>
您的 header 组件现在应该会在加载模板时显示。
宏 还支持变量等等。我建议访问提到的链接。
我的 Java Spring 引导应用程序中有很多不同的 FreeMarker 模板,它们都共享某些元素,例如页眉和页脚。是否可以像 Angular 或 React 中那样构建可重用组件?
我考虑过在 Java 中将元素创建为对象,然后像导入文本一样将它们导入 FreeMarker,但我认为可能有更优雅的解决方案。
FreeMarker 支持 import and include.
但是:
Using include directive is almost always a bad practice, and you should consider using the import directive instead!
我继续使用 import,更多关于何时使用 import here.
使用 import
在 FreeMarker 中构建组件如果你想f.e。导入一个 header 组件,您将创建一个 components.ftl 文件并在其中创建一个 macro。
components.ftl:
<#macro header>
<header>
<p>My first FreeMarker macro component header</p>
</header>
</#macro>
您现在可以将 header 宏导入您的 FreeMarker 模板:
template.ftl
<#import "template-components/components.ftl" as components>
...
<@components.header/>
您的 header 组件现在应该会在加载模板时显示。
宏 还支持变量等等。我建议访问提到的链接。