日前要做新项目,想理解一下子新的技术见见有没有可以改善的地方。于是乎学习了一下子Struts二(预先一直用Struts一),接触到了FreeMarker,做了一些实验以后,对其效能很是不解。
从我自个儿测试以及看网上大伙的述评可以得出FreeMarker具备以次优点:
一、逻辑分开美,View层不出现逻辑代码,可维护性美
二、美工和技术的工作分开
三、速度快,省掉了Jsp编译进程
四、可以在IDE中运作,换言之是可以开展单元测试
五、可以制造Macro
看完大量FreeMarker的文件以及大家伙儿对它的评说以后,仍旧没法打消我内心的不解,针对之上五点我可以讲:
一、逻辑分开,无非是FreeMarker模版没法直接运作Java代码,挟制要求全部数据务须预加工才华将结果传到View层做终极呈现。我个人对这种过于纯正的货色报以怀疑,实际工作中很多时分这种单纯的逻辑分开很难兑现。应一个长期维护的项目,不停增多展示逻辑以后,为了护持View层的这种挟制的清洁,而在Action层增多大量处置逻辑,我不觉得维护性会好(或者我了解错了,终究没长期使用过)。就像前些年风靡XML配置文件,分开了逻辑,嗣后发现太劳驾,又发生了Annotation扑灭XML配置文件,无论是分开仍是集合,逻辑是没法扫灭的,老是要有一个地方置。之所以到底是多写一些代码来军令状View层看起来很美,仍是把展示逻辑全写到View层,谁又能真个说清楚哪个更好。
我们到今日很多项目还在用最守旧的Jsp,也还在用,也会有比较多的Java代码出现在Jsp页面上的景况,但是页面上的代码全都是展示有关的逻辑,都是最容易的Java代码,能Java的就能维护,学习利润根本为零,维护岂不是更好?更切合KISS准则。
二、美工和技术工作分开,我一直觉着这只是一个神话。到今天为止,我们公司美工和开发的合伙人式根本是美工做界面原形图,把亟需的图片切割出来,把亟需的成效打造成CSS付给技术,技术依照亟需的成效开展编码打造HTML静态原形界面。由于,关于略微复杂1点的页面,我相信没哪个技术能禁受美工直接用DreamWeaver生成出来的代码。
三、速度快,算个优点吧,但是没那么主要吧,至于现下的机器正常的Jsp编译也就一两秒钟的事儿。绝大多数的时间仍是花在编纂和测试上的。
四、可以在IDE中运作,这个也算个小优点,但是界面开发更多时分仍是以终极展示成效来开展测试的,终究比较直观。直接从生成的HTML觅亟需的信息和刷新一下子浏览器看结果哪个更高效率?
五、Macro,这个没太多应用心得,就不做评述了,但是可以确定Jsp一定也会兑现。
就之上的这些问题,我没法看到在大范围Web开发中FreeMarker相对于Jsp的胜势。
我以为FreeMarker可以应用在以次场景:
一、AJAX请求的局部内容的生成,比如某个实时刷新的讯息栏。可以称为View层组件,清洁,和主系统效能分开,可重用。
二、Javascript数据生成,甚或Javascript程序的生成。举例来说如Javascript中揭示信息要做多语言处置,那么可以由FreeMarker动态生成,或生成多个静态Javascript资料。
三、后盾动态文档生成,如群发邮件模板生成个性邮件。
任何技术都有他的适用范围,抛砖引玉,希望FreeMarker有丰富心得的弟兄多说说自各儿是何以运用FreeMarker的,以及应用中的一些优点和问题。