我正在创建一个模板引擎基准程序。最初,该程序旨在通过返回渲染结果(作为字符串)来测试模板引擎。然而,一些模板作者提出了一个担忧,即模板引擎不应该返回一个字符串作为结果,而是应该接受一个输出流或写入器实例作为参数并将渲染结果合并到它们中。他们声称该案例代表了正在使用的模板引擎的真实环境。
ASAIK,这个说法不是百分百正确的。Play!Framework(至少 1.x)要求模板引擎返回一个字符串,然后将它们放入输出流中。而且我认为以这种方式组织它是合理的。想想如果任何逻辑错误导致你的模板渲染过程失败,如果你的模板引擎直接输出到响应中,那么错误就变得不可恢复了。在 Play 中,您有很好的机会将响应定向到优雅的系统错误页面,而不是让浏览器运行一半混乱的数据。
另一方面,直接渲染成输出对性能和资源消耗有明显的好处。我很好奇哪一个应该是模板引擎设计师的更好方法。