模板处理器

一个图,说明了模板引擎的所有基本元素和处理流程。

模板处理器(也称为模板引擎模板解析器)是旨在将模板与数据模型相结合以生成结果文档的软件。模板写入的语言被称为模板语言模板语言。出于本文的目的,结果文档是任何形式的格式输出,包括文档网页源代码源代码生成中),无论是全部还是片段。通常将模板引擎作为Web模板系统应用程序框架的一部分包括在内,也可以用作预处理器过滤器

典型功能

模板引擎通常包含大多数高级编程语言常见的功能,并重点是处理纯文本的功能。

这样的功能包括:

嵌入式模板引擎

虽然模板处理器通常是一种单独的软件,用作系统或框架的一部分,但简单的模板语言通常包含在通用编程语言的字符串处理功能中,以及在文本处理程序中,尤其是文本编辑器文字处理程序。与成熟的模板处理器中更复杂的设施相比,模板语言通常是简单的仅替代语言,但可能包含一些逻辑。

简单的示例包括许多文本编辑器和源代码编辑器中找到的“ printf”打印格式字符串,以及许多编程语言和摘要。在文字处理器中,模板是一个常见功能,而模板的自动填充通常称为邮件合并

解析和模板的互补性质的一个说明性示例是SED文本处理器中的s (替代)命令,源自ED文本编辑器中的搜索和重复位置。替换命令是s/regexp/replacement/的形式,其中regexp正则表达式,用于解析输入,而replacement是一个简单的输出模板,即文字文本或包含字符& “整个匹配”的格式字符串,或第9个子表达的特殊逃生序列\1\9 。例如, s/(cat|dog)s?/\1s/g取代了所有出现的“猫”或“狗”与“猫”或“狗”,而无需重复现有的“ s” :( (cat|dog)是REGEXP中的第一个(唯一)子表达,格式字符串中的\1将其替换为输出。

系统元素

所有模板处理系统至少由这些主要元素组成:

  • 相关的数据模型
  • 一个或多个源模板
  • 处理器或模板引擎
  • 结果文档的形式生成的输出。

数据模型

这可能是一个关系数据库,一个源文件,例如XML平面文件数据库的替代格式,电子表格或任何其他各种预制数据的源。某些模板处理系统在可以使用的数据类型中受到限制。其他设计则是为了最大程度的灵活性,并允许许多不同类型的数据。

源模板

传统上指定源模板:

  • 根据现有的编程语言;
  • 根据特殊定义的模板语言;
  • 根据托管软件应用程序的功能;或者
  • 根据上述某些或全部的混合组合。

模板引擎

模板引擎负责:

  • 连接到数据模型;
  • 处理源模板中指定的代码;和
  • 将输出引导到特定的管道文本文件

此外,某些模板引擎允许其他配置选项。

结果文件

这些可能包括整个文档或文档片段。

用途

模板处理在各种上下文中用于不同的目的。特定目的通常取决于使用的软件应用程序或模板引擎。但是,模板处理系统的灵活性通常可以实现非常规用途,目的不是原始设计师最初打算。

模板引擎

模板引擎是一种特定的模板处理模块,它展示了现代编程语言的所有主要功能。术语模板引擎演变为对编程语言的广义描述,其主要或独家目的是处理模板和数据以输出文本。该术语的使用最著名的是使用Web模板系统应用于Web开发,也将其应用于其他上下文。

文档生成

文档生成框架通常使用模板处理作为生成文档的中心模型。

源代码生成

源代码生成工具支持摘要数据模型(例如,UML,关系数据,特定域特异性企业数据存储)的源代码的生成(作为结果文档),用于特定应用程序域,特定的组织或简化计算机的生产过程程序员

软件功能

Web模板引擎处理Web模板和源数据(通常来自关系数据库),以生成一个或多个输出网页或页面片段。它通常作为Web模板系统应用程序框架的一部分。当前,模板处理软件最常用于Web开发的上下文。

比较

XSLT是由W3C设计的模板处理模型。它主要用于XML数据的转换(进入Web文档或其他输出)。

编程语言,例如PerlPythonPHPRubyC#JavaGo支持模板本地处理或通过附加库和模块进行处理。 Javaserver页面活动服务器页面Genshi (用于Python)和Eruby是专门为Web应用程序开发设计的模板引擎的示例。

此外,有时将模板处理作为软件包的子功能包括在内,例如文本编辑器IDE关系数据库管理系统

使用模板引擎的好处

  • 鼓励将源代码组织成操作差的层(请参阅EG, MVC
  • 通过减少不必要的努力来提高生产率
  • 通过允许基于技能的工作分离工作(例如,艺术与技术)来增强团队合作

也可以看看