如何获取enjoy模板的树关系

目前的大需求是模板随时可改动,并且想要达到热更新的效果(类似vue的那种),

并且使用的是enjoy,只是在开发一个jar包,不是web项目

我目前的做法是监控page文件夹下的所有html模板文件,监听到改动,就把所有的模板重新render一遍,这样效率显然较低,所以更为高效的方式是改动了那个文件,那么只需要渲染调用了该文件的父模板即可,这就需要知道模板之间的父子关系,想知道enjoy本身有没有相关的函数,或者enjoy是怎么实现热更新的(比如devMode=true的情况)

评论区

JFinal

2018-09-10 18:19

对 engine 对象配置一下 devMode 即可,极其简单:
engine.setDevMode(true)

Dull

2018-09-10 18:22

@JFinal 不,如果只是devMode那如何获取视图,还是enjoy自带web服务?为了获取最终的html页面,我是调用了下面的代码,渲染成文件,然后自启一个web服务器来进行渲染的
File destFile=Paths.get(".","preview/"+view+".html").toFile();
Config.engine.getTemplate("source/page/"+view+".html").render(null,destFile);

Dull

2018-09-10 18:24

@JFinal 如果为此引入一个jfinal+jetty-server倒也不是不可以,只是偏重了一些

JFinal

2018-09-10 18:24

@Dull 难道你将模板渲染出来并生成为 html 静态文件了?

Dull

2018-09-10 18:27

@JFinal 哈哈,是哎,因为我没找到好用的可以直接展示页面的方法哎

Dull

2018-09-10 18:32

@JFinal 好像效率是低一些,看了jfinal的render方法
OutputStream os = response.getOutputStream();
engine.getTemplate(view).render(data, os);
我考虑去找一个简易的web包来实现一下试试看,渲染成静态文件(html)的好处是便于理解jar都做了哪些工作

JFinal

2018-09-10 20:13

@Dull enjoy 的 engine.getTemplate(...) 得到 Template 对象以后,里面很多办法输出到各种地方,其中的 Writer、OutputStream 可以定向输出到任何地方

都什么时代了,还在生成静态 html 。 jfinal enjoy 的性能是 freemarker、velocity 这类模板引擎的 4 倍多:
https://www.oschina.net/news/90815/jfinal-3-3

有了这样的性能,生成静态 html 完全没有必要了

热门反馈

扫码入社