为什么要使用模板引擎而不是首选jsp?

  本篇属个人随笔,随意编写,很不严谨,欢迎拍砖。

  在软件工程一般实践中,为什么普遍使用模板引擎而不是首选jsp?

  尤其是对于偏后端的程序员来说,感觉上其实jsp也能实现视图的功能,而且写jsp其实还更简单(不包括JSTL),直接使用Java的语法就可以了,感觉跟后端程序一样一样的。

  其实问题就出在这里——无法实现前后端的有效解耦。

  不知道大家是否见过下面这种暗黑代码,反正我在十多年前是见过的,它在服务端(通常是Linux服务器)通过C语言,硬编码输出HTML代码。几乎一切可变内容都通过万能的sprintf函数来实现。这叫做CGI规范编程。

为什么要使用模板引擎而不是首选jsp?_第1张图片

  其实jsp也是跟上面的c语言代码是一路的。jsp文件会编译成一个java class文件,你要打开文件看一眼,就还是一样的配方、还是熟悉的味道。jsp文件糅合了三种元素:Java代码、动态的数据、HTML代码结构。从抽象层次来看,Java代码部分不仅用来组织数据,还被用来控制HTML页面结构。这样在层次划分上属于比较含糊不清的。

  还有另外一个原因。写jsp给了程序员随意书写Java代码的自由,自然也就给了很多犯错的机会。尤其偏向前端的程序员,可能Java功底不是太好。这时与其给他完整的Java世界,不如给他一个限定的子集,更为妥当。

  最后,最不决定本质的一个因素是,一些模板引擎具有部分较优的功能,如更好的代码段带参重用、支持多种生成文件格式等等。

  所以,这么看的话:

jsp:java代码+数据+html = html

模板引擎:数据+模板 = html

  基于模板引擎构建的前端视图,在服务器上才有所谓的“渲染”过程。jsp在服务器端只有字符串输出而已,与古老的CGI程序通本同源。

你可能感兴趣的:(Java后端)