gpt4 book ai didi

java - 模板引擎应该渲染到输出流还是返回一个字符串

转载 作者:行者123 更新时间:2023-11-30 09:27:36 26 4
gpt4 key购买 nike

我正在创建一个 template engine benchmark程序。最初,该程序旨在通过返回渲染结果(作为字符串)来测试模板引擎。然而,一些模板作者提出了一个问题,即模板引擎不应该返回一个字符串作为结果,而是应该接受一个输出流或编写器实例作为参数并将渲染结果合并到它们中。他们声称这种情况代表了正在使用的模板引擎的真实环境。

ASAIK,这个说法不是百分百正确的。 Play!Framework(至少 1.x)要求模板引擎返回一个字符串,然后将它们放入输出流。我认为以这种方式组织它是合理的。想一想如果任何逻辑错误导致你的模板渲染过程失败,如果你的模板引擎直接输出到响应中,那么错误就变得不可恢复了。在 Play 中,您有很好的机会将响应定向到一个优雅的系统错误页面,而不是将一半困惑的数据运行到浏览器。

另一方面,直接渲染到输出在性能和资源消耗方面有明显的好处。我很好奇哪一个应该是模板引擎设计师的更好方式。

最佳答案

写给Writer,因为这是最小的公分母。为方便起见,您的算法可能更愿意将其包装在 PrintWriter 中,这样您就可以接受 FileWriterOutputStreamWriterStringWriter

写入字符串似乎是个坏主意,因为在现实世界中,您不太可能需要保留整个字符串以进行后期处理,而是让您能够以小的逻辑片段编写或发送文档——因此您的内存消耗模式将更加真实。

请记住,如果您接受一个 Writer,您可以使用一个 StringWriter 来获取一个字符串。如果您使用字符串,即使 Writer(和流式 API)就足够了,您也将被迫永远分配该内存。

关于java - 模板引擎应该渲染到输出流还是返回一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14518389/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com