是否可以将 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 组件现在应该会在加载模板时显示。

还支持变量等等。我建议访问提到的链接。