Создает ли ColdFusion базовые теги HTML автоматически?

Создает ли ColdFusion автоматически основные теги HTML, такие как:

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

Или вам нужно включить это в свой исходный код, такой как ASP или PHP?


person Robin Rodricks    schedule 07.06.2009    source источник


Ответы (8)


Я лично не хотел бы, чтобы 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>
person Ryan McIlmoyl    schedule 07.06.2009
comment
Я также хотел бы отметить, что cfoutput оценивает и выводит выражения ColdFusion и по умолчанию не требуется для общего HTML (есть определенные случаи, когда это необходимо и для HTML, но вы должны специально включить этот режим обработки). - person Justin Scott; 22.09.2011

Самый простой способ объяснить это:

Код CFML извлекает, вычисляет и отображает информацию внутри HTML-документа.

Таким образом, если вы используете какой-либо фреймворк, включаемый файл заголовка на каждой странице будет содержать ..

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

и страница нижнего колонтитула будет включать ..

</body> </HTML>

Конечно, как и в любом другом случае, если вы по какой-то причине захотите, вы можете запрограммировать что-то, чтобы выводить и их для вас.

Я обнаружил, что CFML — это самый простой синтаксис, позволяющий оставаться читаемым внутри HTML, и нет ничего сложного в том, чтобы оставить его таким.

Надеюсь, это поможет.

person Jas Panesar    schedule 07.06.2009

Включите его в свой источник. Даже если он добавил их автоматически (а это не так), вам почти всегда нужно больше контроля (т. е. настройка ваших мета-тегов).

Кстати, вам даже не нужны эти теги. Следующий фрагмент должен корректно отображаться в большинстве браузеров.

<div> HI </div>
person SpliFF    schedule 07.06.2009
comment
Извините, что задаю такой вопрос, но я совершенно сбит с толку ошеломляющим количеством тегов, которые поддерживает CF, но CF похож на PHP, где вы можете просто написать свой HTML-код вне некоторого открывающего тега, такого как ‹?php, или вам нужно явно сбрасывать( ) Это ?? - person Robin Rodricks; 07.06.2009
comment
нет необходимости сбрасывать CF, если вы не пытаетесь улучшить производительность для определенных страниц (например, сбрасывать заголовки, чтобы внешние документы начинали загружаться раньше). - person SpliFF; 08.06.2009
comment
@jeremy: чтобы ответить на твой вопрос, да, в этом отношении это похоже на PHP. Теги CF обрабатываются вне HTML перед его отправкой в ​​браузер. - person Ciaran Archer; 08.06.2009
comment
Нет, вам нужны нужны теги html, head и body. Когда вы переходите улицу, вам не нужно обращать внимание на светофоры, они уж точно не мешают вам идти. Видишь, что я имею в виду? - person shylent; 09.06.2009
comment
застенчивый, с HTML5 вы можете законно опускать многие теги - html, заголовок и тело, в частности, становятся необязательными (как открывающими, так и закрывающими), когда вы указываете ‹!DOCTYPE html› в качестве первого содержимого файла. - person Peter Boughton; 09.06.2009

Вы можете создать собственный тег, чтобы сделать это за вас.

Например, на каждой странице, где вам нужен стандартный шаблон, вы можете использовать что-то вроде:

<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>
person Peter Boughton    schedule 07.06.2009

В качестве альтернативы выберите базовую настройку шаблонов и используйте (meta.cfm,) header.cfm, sidebar.cfm, footer.cfm и используйте тег <cfinclude template=""> на каждой странице. Еще лучше использовать фреймворк для управления всем этим через контроллер, что упростит потом вывод контента в разных форматах.

person Alistair Knock    schedule 09.06.2009

Нет, Coldfusion не будет включать ничего, о чем вы не укажете.

Для общей страницы, которой требуется тег HTML/BODY (т. е. не фрагмент кода для вставки), вы можете использовать любое количество пользовательских функций/тегов для вывода тегов HTML/BODY, но в целом проще всего просто ввести их в.

Теперь вы можете использовать некоторый код верхнего/нижнего колонтитула, чтобы вставлять их автоматически, но это может привести к необходимости дополнительной логики для их исключения при определенных обстоятельствах. Что может быть излишним, если вы ищете что-то простое.

Обратите внимание, что есть некоторые виджеты, предоставляемые CF, которые будут генерировать НЕКОТОРЫЙ HTML. Так, например, CFTABLE приведет к тегу TABLE на каком-то уровне. Но это в первую очередь способ упростить создание таблиц, тогда как HTML/BODY не может быть намного проще.

person Tom Hubbard    schedule 09.06.2009

Если... и это большое ЕСЛИ... если вы не возражаете против того, чтобы каждый запрос имел открывающий и закрывающий теги 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>

Нет, это не лучший способ, потому что он очень ограничивает, но это другой путь! :ОД

person Adrian Lynch    schedule 12.06.2009

Чтобы ответить на ваш вопрос, да, вам нужно включить разметку на странице.

Как указывали другие авторы, это может быть что-то отличное от HTML, которое вы хотите вывести, например, документ PDF или JSON. CF делает такие вещи очень простыми, что является частью его привлекательности.

person Ciaran Archer    schedule 08.06.2009