老项目的春天来了之enjoy模板

项目背景  :jfinal2.2+freemark

改造开始

    1、按照 老项目的春天来了!姿势正确,心情愉快的使用上enjoy sql管理功能 这篇分享用上enjoy-sql

    2、将com.jfinal.render.TemplateRender复制到自己的项目里面

    3、初始化enjoy。我是在继承JFinalConfig的类里面新增了一个configEngine方法,然后在afterJFinalStart方法里面调用configEngine方法。大家可以直接将configEngine方法的内容放到afterJFinalStart里面。代码如下:

/**
 * 初始化jfinal模板
 */
 public void configEngine(){
     Engine engine = new Engine("JFinal Web");
     engine.setDevMode(PropKit.getBoolean("devMode", true));//是否是开发者模式
     engine.setBaseTemplatePath(PathKit.getWebRootPath());//设置模板根目录
     engine.addSharedFunction("/WEB-INF/view/common/index_layout.html");//设置页面统一布局模板
     engine.addSharedFunction("/WEB-INF/view/common/attendance_tabbar.html");//微信考勤底部菜单按钮
     //初始化jfinal enjoy
     TemplateRender.init(engine);	
 }

 @Override
 public void afterJFinalStart() {
     configEngine();
 }

4、开始使用:render(new TemplateRender("index.html")),我觉得这样有点麻烦。为了偷懒,我直接创建了一个BaseController继承jfinal的Controller,然后在BaseController里面增加了一个方法,要使用enjoy的的controller都继承这个BaseController就可以了。代码如下:

public class BaseController extends Controller {

	/**
	 * 使用jfinal模板引擎
	 * @param view 模板路径
	 */
	public void renderEnjoy(String view){
		render(new TemplateRender(view));
	}
}

public class TestController extends BaseController {

	public void index(){
		renderEnjoy("index.html");
	}
}

好了!用波总的话说就是:打完收枪!

番外

        项目开始没有使用jinal3的原因是因为我进公司的时候,项目一期已经完成,老板我要做的事情就是在一期的基础上进行二次开发。当时jfinal3已经发布了,我也用jfianl接了几个单子做了。所以看到model里面大段大段的拼接sql代码的时候,我的内心是崩溃的;要我这样写,我的内心是拒绝的。我又不敢贸然的将项目升级到jfinal3。就只能一边痛苦的在model中拼sql,一边找方法用上enjoy作为sql的模板。直到几个月以后,我的救星来了!它就是 老项目的春天来了!姿势正确,心情愉快的使用上enjoy sql管理功能 按照这篇分享,马上改造了项目,sql管理就这样解决了!在这里特别感谢这位同学的无私分享!一周以后我又觉得不舒服了,因为以前没用过freemark,所以freemark的标签知道得不多,得经常去查freemark的使用文档,用起来相当不顺手!于是就产生了用enjoy替代freemark的想法。既然sql都能用enjoy管理,页面应该也应该可以用enjoy作为模板。然后我就去看jfinal的源码,运行jfinal3.0的项目,看TemplateRender是怎么执行的,结合波总平时给大家的分享。让我找到了老项目也能用enjoy做模板引擎的方法。而且使用起来和jfinal3无异。如果大家有更好的办法,请告诉我,让我能多学点是一点!

这是彩蛋

不要相信爱迪生说的:天才是九十九分的勤奋再加上一分的灵感!程序员天生就是为偷懒而生的!写程序要有偷懒的想法,这样才能用更少的代码做更多的事情,才容易创造新的东西。虽然有时候会因为这个偷懒的想法耗费更多的时间,但是当解决这个问题的时候那种成就感是非常舒服的!程序员也不要怕尝试!代码中的错误、异常也是程序员的一大笔财富!!!

评论区

JFinal

2018-12-26 11:05

这个方案无疑是在老版本 jfinal 1/2 中使用 enjoy 的最佳方案,十分简洁,并且没有任何副作用

这个方案还有一个可以改进的地方,老版本的 jfinal 也是可以通过 IRenderFactory 切换底层的 main render 的,通过实现 IRenderFactory 接口,可以将 Controller.render(String view) 这个方法的 view type 给切换到 enjoy

当然,如果你的老系统中 render(String view) 仍然在使用 freemarker 之类的使用 BaseController 扩展是最好的

感谢分享,点赞 + 收藏

热门分享

扫码入社