将整个CFM页面包装在cfoutput标记中是否安全

时间:2014-07-25 13:57:01

标签: coldfusion

我在整个<cfoutput>标记周围放置了<html>标记。 ColdBox最佳实践指南指出&#34;当您创建视图模板时,请尝试始终使用1 cfoutput标记将其包围,而不是将它们嵌套在整个地方。&#34;

但我偶尔会看到包含javascript代码的<script>块在<cfoutput>标记内的错误。这可能是因为Coldfusion看到一个哈希#并试图解析它但它不能因为它的javascript而来。

那么如何在视图页面上放置一个<cfoutput>标记来放置所有内容?

3 个答案:

答案 0 :(得分:3)

我不知道在cfoutput中包装整个页面有任何重大的安全性或性能问题。当然,你总是需要注意通过在cfoutput内部加倍来消除任何英镑符号。

ColdBox指南中的最佳实践主要是为了提高可读性并减少页面上的混乱。如果您有页面的大部分,您不想逃避英镑标记或者如果您想使用cfoutput的分组功能,那么以合理的方式分解您的cfoutput并没有错。

在CF的旧时代,可能会有更多的开销,但是现在我无法想象它超过几纳秒,而且这只是在编译时。

答案 1 :(得分:2)

在我的视图文件中,我倾向于将所有输出包装在一个cfoutput标记中。

您可以通过将#转换为##来转义JavaScript中的{{1}}符号。

答案 2 :(得分:0)

发布的问题的简单答案是肯定的。

我只想到两个问题:

  1. 使用可能出现在代码中的双重标签(##)来逃避任何单个主题标签(#)(即CSS,JS等)......除非主题标签实际上是围绕CFML函数或变量进行处理。
  2. 如果您正在使用&#34; cfoutput查询...&#34;,您可能希望关闭第一个&#34; cfoutput&#34;标记,然后在查询输出后重新打开。否则,在尝试对查询输出进行分组时可能会遇到问题。
  3. 我的偏好是使用尽可能少的标签,主要是为了提高可读性并减少混乱。