如何使用 jfinal enjoy 的 html 压缩功能

    jfinal 虽然已精致迭代发展 9 年多时间,但仍然经常在添加新功能,仍然会有新的改进和优化。

    最近 jfinal 俱乐部有位同学提出来需要一个 jfinal enjoy 模板引擎的 html 压缩功能。昨晚已添加了该功能。具体的用法十分简单,只需要在 configEngine 中添加一行配置即可:

public void configEngine(Engine me) {
   me.setCompressorOn('\n');
}

   jfinal 4.9 还未发布到 maven 中心库,想要使用该功能的同学可以参考这篇分享:

https://jfinal.com/share/2093


   以上配置 me.setCompressorOn('\n') 配置了回车字符为压缩分隔符,该配置可以支持 javascript 脚本使用换行代替分号的情况。如果模板文件中的 javascript 正确使用了分号,将 enjoy 的压缩分隔符配置为空格更好:

me.setCompressorOn(' ');


压缩后的 html 内容是如下这样的:

compressed.png

   对 html 进行压缩可以缩小其体积,减少网络流量占用,对于访问量高的 web 项目比较有价值

   enjoy 的压缩功能仅对静态文本部分进行压缩,不压缩动态部分,也就是不压缩指令输出的内容。由于静态文本是被缓存的,所以压缩动作只需执行一次,才能达成性能极致。


评论区

zzutligang

2020-04-30 10:00

这个功能好!赞一个!

七五热

2020-05-06 10:01

这些美妙的功能点,能不能写人文档啊!!

JFinal

2020-05-06 13:52

@七五热 新版本发布以后记得提醒我写到文档中

现在不能写,未发布到 maven 中心库

canca

2020-05-06 23:28

@JFinal 期待发布!

SuperEric

2020-05-07 21:30

眼睛张

2020-05-14 17:39

点个赞

大白熊

2020-05-15 09:51

fred

2020-05-28 10:42

模板文件中的 javascript 使用“//” 注释时会报错,有没有解决办法?

fred

2020-05-28 10:50

可以同时删除注释吗

JFinal

2020-05-28 14:04

@fred 这个是 html 压缩功能,不是 java script 压缩功能,后者的压缩涉及 js 语法解析,工作量是极大的

有两个建议,一是使用换行作为压缩分隔字符
setCompressorOn('\n')
这个配置压缩率是完全一样的



第二个方案是继承 Compressor ,用上第三方的 js 压缩工具扩展一下,在 Compressor 的注释中有如下说明:

7:压缩分隔符默认配置为 '\n',还可配置为 ' '。如果模板中含有 javascript 脚本,需配置为 '\n'

8:可通过 Engine.setCompressor(Compressor) 来定制自己的实现类 可使用第三方的压缩框架来定制

例如使用 google 的压缩框架: 压缩 html: com.googlecode.htmlcompressor:htmlcompressor 压缩 javascript: com.google.javascript:closure-compiler

fred

2020-05-28 16:06

@JFinal 好的,谢谢

JFinal

2020-05-28 16:18

@fred 其实用 setCompressorOn('\n') 就足够好了,既保障了压缩率,又保障了压缩性能,还保障了压缩结果的可读性

laofa

2020-05-28 20:24

能把里边的js混淆就最好不过了

JFinal

2020-05-28 20:34

@laofa 这个就在 jfinal 领域之外了,有些轮子还是不要重复去造为好,节省资源

tosur

2021-03-05 18:10

@JFinal 如果说有一个单独的HTML页面,不需要压缩,怎么设置。该页面包含code源码

JFinal

2021-03-05 19:17

@tosur 没这个配置,目前不支持

如果一定要用,可以通过创建多个 Engine 对象,其中一个配置压缩,一个不配置,然后 render 的时候分别使用不同的 engine 对象

enjoy 的 engine 对象是可以分别独立配置使用的

热门分享

扫码入社