ColdFusion会自动生成基本HTML标记吗?

时间:2009-06-07 19:18:42

标签: coldfusion

ColdFusion会自动生成基本的HTML标记,如:

   <HTML> <head></head> <body></body> </HTML>

或者您是否必须在源代码中包含它,如ASP或PHP?

8 个答案:

答案 0 :(得分:6)

我个人不希望ColdFusion包含这些标签,因为我并不总是输出HTML。

此外,与PHP不同,没有<?coldfusion>标记,或者您用来声明CF应该处理代码的任何类似标记。所有ColdFusion标签都以'cf'为前缀,并且可以散布常规HTML代码。请注意,为了将输出呈现到页面,您必须使用“<cfoutput>”标记。即

<cfset variables.firstName = 'My Name' />
<html>
<head>
  <title>ColdFusion Sample</title>
</head>
<body>
 Hello <cfoutput>#variables.firstName#</cfoutput>
</body>
</html>

答案 1 :(得分:2)

我能想到解释它的最简单的方法是:

CFML代码检索,计算和显示HTML文档中的信息。

因此,如果您使用的是任何类型的框架,每个页面上的标题包含文件都将包含..

<HTML> <head></head><body>

页脚页面将包含..

</body> </HTML>

当然,就像任何事情一样,如果出于某种原因你想要,你可以编程一些东西来输出这些也适合你。

我发现CFML是最容易在HTML中保持可读性的语法,离开它并不是什么大不了的事。

希望有所帮助。

答案 2 :(得分:1)

将其包含在您的来源中。即使它确实自动添加它们(它没有),你几乎总是需要更多控制(即设置元标记)。

顺便说一下,你甚至不需要这些标签。以下代码段应在大多数浏览器中正确显示。

<div> HI </div>

答案 3 :(得分:1)

您可以创建自定义标记来为您执行此操作。

例如,在您想要标准模板的每个页面中,您可以使用以下内容:

<cf_page
    title  = "MyTitle"
    styles = "base.css,form.css,theme.css"
    >

    Main Page Content

</cf_page>


然后为了完成这项工作,请创建一个类似于此的page.cfm

<cfswitch expression="#ThisTag.ExecutionMode#">

    <cfcase value="START">

        <cfcontent reset/><cfoutput><!DOCTYPE html>
<html>
    <head>
        <title>#Attributes.Title#</title>

        <cfif StructKeyExists(Attributes,'Styles')>
        <cfloop index="CurStyle" list="#Attributes.Styles#">
            <link rel="stylesheet" href="#CurStyle#"/>
        </cfloop>
        </cfif>

        <cfif StructKeyExists(Attributes,'Scripts')>
            <cfloop index="CurScript" list="#Attributes.Scripts#">
                <script type="text/javascript" src="#CurScript#"></script>
            </cfloop>
        </cfif>

        <cfif StructKeyExists(Attributes,'HeadContent')>#Attributes.HeadContent#</cfif>
    </head>
    <body>
</cfoutput>

    </cfcase>

    <cfcase value="END">
        <cfoutput>
        </body>
</html></cfoutput>
    </cfcase>

</cfswitch>

答案 4 :(得分:1)

或者,进行基本模板设置并使用(meta.cfm,)header.cfm,sidebar.cfm,footer.cfm并在每个页面上使用<cfinclude template="">标记。甚至比这更好,使用框架通过控制器管理所有这些,这将使不同格式的内容输出更简单。

答案 5 :(得分:1)

不,Coldfusion不会包含任何你不告诉它的东西。

对于需要HTML / BODY标记的一般页面(即不是要粘贴的代码块),您可以使用任意数量的自定义函数/标记来输出HTML / BODY标记,但总体上最简单的是只需输入它们。

现在,您可以使用一些页眉/页脚代码自动粘贴它们,但这可能导致在某些情况下需要更多逻辑来排除它们。如果你正在寻找简单的东西,这可能是一种过度的。

请注意,CF提供的一些小部件将生成一些html。因此,例如CFTABLE将在某个级别产生TABLE标记。但这主要是一种简化表创建的方法,而HTML / BODY则不会简单得多。

答案 6 :(得分:1)

如果......这是一个很大的IF ...如果您不介意每个请求都有开始和结束HTML标记,您可以将它们添加到Application.cfm / OnRequestEnd.cfm或Application.cfc。

Application.cfm:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html>
<head>
    <title>Page title here</title>
</head>
<body>

OnRequestEnd.cfm:

</body>
</html>

或Application.cfc - OnRequest():

<cffunction name="OnRequest" output="true" returntype="void">

    <cfargument name="targetPage" type="string" required="true">

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

    <html>
    <head>
        <title>Page title here</title>
    </head>
    <body>
        <cfinclude template="#ARGUMENTS.targetPage#">
    </body>
    </html>

</cffunction>

不,这不是最好的方式,因为它非常有限,但它是另一种方式! :OD

答案 7 :(得分:0)

要回答您的问题,是的,您需要在页面中包含标记。

正如其他海报所指出的那样,它可能是您想要输出的HTML以外的内容,例如PDF文档或JSON。 CF使这种东西变得非常简单,这是它吸引力的一部分。