通过HTTP响应报文回传给客户端的HTML是由模板(template)转换而成的,模板里面可能会包含HTML,但也可能不会,而模板引擎(template engine)则通过模板和数据来生成最终的HTML。正如之前所说,模板引擎是经由早期的SSI技术演变而来的。
模板可以分为静态模板和动态模板两种,这两种模板都有各自的设计哲学。
- 静态模板是一些夹杂着占位符的HTML,静态模板引擎通过将静态模板中的占位符替换成相应的数据来生成最终的HTML,这种做法和SSI技术的概念非常相似。因为静态模板通常不包含任何逻辑代码,又或者只包含少量逻辑代码,所以这种模板也称为无逻辑模板。CTemplate和Mustache都属于静态模板引擎。
- 动态模板除了包含HTML和占位符之外,还包含一些编程语言结构,如条件语句、迭代语句和变量。JavaServerPages(JSP)、Active Server Pages(ASP)和EmbeddedRuby(ERB)都属于动态模板引擎。PHP刚诞生的时候看上去也像是一种动态模板,它是之后才逐渐演变成一门编程语言的。
到目前为止,本章已经介绍了很多Web应用背后的基础知识以及原理。初看上去,这些内容可能会显得过于琐碎了,但随着读者对本书内容的不断深入,理解这些基础知识的重要性就会慢慢地显现出来。在了解了Web应用开发所需的基本知识之后,现在是时候进入下一个阶段——开始实际地进行Go编程了。在接下来的一节,我们将开始学习如何使用Go开发Web应用。