gpt4 book ai didi

java - 如何缩小 Thymeleaf 生成的 HTML

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:37:39 27 4
gpt4 key购买 nike

有人知道如何缩小我的 Thymleaf 生成的 HTML 吗?

当我使用 JSP 时,我可以在这个依赖项中使用 googleCompressor:

<dependency>
<groupId>com.googlecode.htmlcompressor</groupId>
<artifactId>htmlcompressor</artifactId>
<version>1.5.2</version>
<optional>true</optional>
</dependency>

但现在我已经转移到 Thymeleaf,但我不知道如何缩小我的 Thymeleaf 页面。

最佳答案

不幸的是,我不知道现有的库,但你可以创建一个小方言来实现这样的简单缩小:

首先创建一个处理程序

import java.util.regex.Pattern;

import org.thymeleaf.engine.AbstractTemplateHandler;
import org.thymeleaf.model.IComment;
import org.thymeleaf.model.IText;
import org.thymeleaf.util.StringUtils;

public class SimpleMinifierHandler extends AbstractTemplateHandler {

private static final Pattern TAB_OR_NEW_LINE = Pattern.compile("[\\t\\n]+\\s");

@Override
public void handleComment(IComment comment) {
// do not print comments at all
}

@Override
public void handleText(IText text) {
// ignore white spaces, tabs and new lines
if (!ignorable(text)) {
super.handleText(text);
}
}

private boolean ignorable(IText text) {
return StringUtils.isEmptyOrWhitespace(text.getText()) || TAB_OR_NEW_LINE.matcher(text.getText()).matches();
}
}

然后创建一个你自己的方言并附加你的处理程序:

import java.util.HashSet;
import java.util.Set;

import org.thymeleaf.dialect.IPostProcessorDialect;
import org.thymeleaf.engine.ITemplateHandler;
import org.thymeleaf.postprocessor.IPostProcessor;
import org.thymeleaf.templatemode.TemplateMode;

public class SimpleMinifierDialect implements IPostProcessorDialect {

@Override
public String getName() {
return "simple-minifier";
}

@Override
public int getDialectPostProcessorPrecedence() {
return 1000;
}

@Override
public Set<IPostProcessor> getPostProcessors() {
Set<IPostProcessor> set = new HashSet<>(1);
set.add(new IPostProcessor() {
@Override
public TemplateMode getTemplateMode() {
return TemplateMode.HTML;
}

@Override
public int getPrecedence() {
return 1000;
}

@Override
public Class<? extends ITemplateHandler> getHandlerClass() {
return SimpleMinifierHandler.class;
}
});
return set;
}
}

现在您可以轻松地将方言添加到现有的模板引擎中:

@Bean
public TemplateEngine templateEngine() {
SpringTemplateEngine engine = new SpringTemplateEngine();
...
...
...
engine.addDialect(new SimpleMinifierDialect());
return engine;
}

此方言不处理任何资源,如 CSS/JS,它仍然在 HTML 中打印不必要的字符。但我认为它展示了如何使用 Dialects 来自定义输出。

希望对你有帮助,问候

关于java - 如何缩小 Thymeleaf 生成的 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39098106/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com