关于项目中要使用thymeleaf的一些想法

原文链接: https://my.oschina.net/u/818053/blog/883283

    关于web项目渲染页面数据,有很多模板引擎。初学java的时候jsp最流行,而且我参加第一份工作的时候,也是用的jsp,不外乎其他就是简单。在和同学们交流技术的时候突然听到freemarker velocity这些陌生的词语,当时很困惑,难道jsp不是大家都用的吗?经过一段时间的谷百,才确切的知道原来页面模板这么多,不同公司根据业务场景用的都不同。这就跟发现了新大陆一样,当时有个想法,赶紧学学这些玩意,万一下次跳槽用到了就不会很尴尬。确实学了,然后也用了,直到现在,项目里的大牛已经把freemarker用的出神入化,能用的概念基本上都有涉及。但是,页面已经杂乱无章,前后端严重耦合,让前端同学改个功能,freemarker成了一块绊脚石。这已经违背了使用的初衷。

    紧接着看了看velocity,感觉它俩是一个套路,语法也挺简单,为了不将就,干脆就放弃了。

    现在不都流行前后端分离,目前的项目中使用的freemarker,做分离的流程是这个样子的:前端同学写好HTML页面,交付后端人员转成ftl,这要求后端人员懂一点HTML JS等。在套的过程中,出现点问题,叫过来前端同学,哇,怎么一堆#if else之类的东西,加个判断之后再加个样式,什么鬼,你怎么不是按照我的来。这一来二去的,很难受。为了尽量减少这种沟通障碍,提高开发的效率,我开始寻找一种简便的模板引擎。巧合之下,在开源中国看到了thymeleaf。打开官网,一片英文。于是网上查证,找到了很多这样那样的话,最多的是坑多,模板效率低啊。说好的是thymeleaf 建议 HTML 尽量写的清晰、简单、轻量(thymeleaf 解析时会在内存中构建 DOM 树, 比其它模板引擎相比会占用更多的内存, 这也是不建议使用内容复杂的HTML 的原因之一)。离前端更近,让视图(或者说UI)开发协作更简单,与后端开发解耦,这个优势是其它任何JAVA模板引擎(非自然模板引擎)无法超越的。我努力去想了想,性能到底会对一个小demo造成多大的影响,会踩到多大的坑。springboot 项目现在推荐使用thymeleaf模板,不如就去试一下。于是我说服技术leader在线上使用thymeleaf替换部分页面。具体的freemarker转HTML由我来做。为了保证项目不出大问题,暂时将项目搞的支持jsp,freemarker,thymeleaf。freemarker优先(这里如何整合多个模板引擎是个知识点)。果然,在现在线上运行的项目中,替换了部分页面为thymeleaf,其余还保持freemarker,性能方面,暂时没有让人抓狂。坑的问题,网上百度出来的,thymeleaf的版本较低,版本特性不同,则是建议直接去看官方的文档。至少看了文档,就填了90%的坑。

    虽然前后端分离的事情还是很遥远,既然走出了第一步,也不太想搁置下去,继续去实践个项目,去想springboot的事情。

    模板引擎这么多,各用所需,毕竟适合自己的才是最好的。

转载于:https://my.oschina.net/u/818053/blog/883283

你可能感兴趣的:(关于项目中要使用thymeleaf的一些想法)