Язык разметки ColdFusion

Язык сценариев для веб-разработки
Язык разметки Cold Fusion (CFML)
Парадигмаимперативный , объектно-ориентированный
РазработаноДжереми Аллер , Джозеф Дж. Аллер
РазработчикAdobe Systems ( ColdFusion ), Lucee Association ( Lucee ), New Atlanta и aw2.0 (openBD), The Railo Company ( Railo )
Впервые появился1995 ; 30 лет назад ( 1995 )
Стабильный релиз
Выпуск 2023 / 2023 ; 2 года назад ( 2023 )
Язык реализацииЯва
ОСКроссплатформенный
ЛицензияЗависит от реализации. Доступны проприетарные , LGPL и GPL -лицензированные движки.
Расширения имени файла.cfm, .cfc
Веб-сайтwww.adobe.com/products/coldfusion
Основные внедрения
Adobe ColdFusion , Lucee , Railo , BlueDragon, Open BlueDragon
Под влиянием
Люси

ColdFusion Markup Language , более известный как CFML , — это скриптовый язык для веб-разработки, работающий на виртуальной машине Java (JVM), .NET Framework и Google App Engine . Доступно несколько коммерческих и бесплатных программных реализаций движков CFML с открытым исходным кодом , включая Adobe ColdFusion , Lucee , New Atlanta BlueDragon ( версии Java и .NET), Railo , Open BlueDragon и другие серверные движки CFML .

Синопсис

В своей простейшей форме, как и многие другие языки веб-скриптов, CFML дополняет стандартные HTML- файлы командами базы данных , условными операторами , функциями высокоуровневого форматирования и другими элементами для создания веб-приложений . [1] [2] CFML также включает в себя множество других конструкций, включая компоненты ColdFusion (CFC), версию объектов CFML , которые позволяют отделить бизнес-логику от представления.

CFML можно написать с использованием тегов или CFScript , который напоминает JavaScript ( ECMAScript ).

Страницы в приложении CFML включают серверные теги и функции CFML в дополнение к тегам HTML. Современные приложения CFML также имеют тенденцию иметь CFC, к которым обращаются страницы CFML для выполнения бизнес-логики. Когда веб-браузер запрашивает страницу в приложении ColdFusion, она автоматически предварительно обрабатывается сервером приложений ColdFusion . [3]

CFML также можно использовать для генерации других языков, помимо HTML, таких как XML , JavaScript , CSS и т. д.

Несмотря на название, CFML не является языком разметки. Он также не является SGML , поскольку некоторые основные функции CFML не позволяют ему соответствовать.

Механизм CFML настроен таким образом, что определенные расширения файлов на сервере (.cfm, .cfc) передаются механизму CFML для обработки. В случае механизмов на основе Java это достигается с помощью сервлетов Java . Механизм CFML обрабатывает только теги и функции CFML; он возвращает текст за пределами тегов и функций CFML на веб-сервер без изменений. [4]

История

Изначально названное Cold Fusion, программное обеспечение было создано в 1995 году корпорацией Allaire , изначально расположенной в Миннесоте . Позже она переехала в Кембридж, штат Массачусетс, а затем, наконец, в Ньютон, штат Массачусетс, прежде чем была приобретена Macromedia в 2001 году. Таким образом, Allaire Cold Fusion стала Macromedia Cold Fusion. При выпуске версии 4 пробел в названии был удален, и теперь оно называется ColdFusion. Adobe приобрела Macromedia в 2005 году. По состоянию на 2023 год [обновлять]она все еще активно разрабатывает ColdFusion.

В 1998 году Алан Уильямсон и его шотландская компания "n-ary" начали создавать шаблонизатор для Java, чтобы упростить общие задачи программирования. [5] Уильямсон использовал фигурные скобки вместо тегов, но когда он увидел пример CFML и то, как он решал похожие проблемы (хотя и не в Java) с помощью синтаксиса тегов, он начал разрабатывать то, что в конечном итоге стало BlueDragon, который был первой реализацией языка CFML на Java. (ColdFusion был написан на C и C++ до версии 6.0, первой версии на основе Java, выпущенной в 2002 году.) New Atlanta лицензировала BlueDragon около 2001 года и сделала его доступным в качестве коммерческого продукта, в конечном итоге создав реализацию CFML на .NET . Open BlueDragon является ответвлением коммерческого продукта BlueDragon и был впервые выпущен в 2008 году.

Движок Railo CFML начинался как студенческий проект в 2002 году и был впервые запущен как коммерческий проект в 2005 году. [6] Railo объявили, что они делают исходный код движка открытым в 2008 году, а первая версия с открытым исходным кодом была выпущена в 2009 году.

18 июня 2009 года на конференции CFUnited компания Adobe объявила о формировании Консультативного комитета CFML [7] , который будет отвечать за руководство и рассмотрение изменений в языке CFML. Эта работа была прекращена в 2010 году. Группа Google CFML Conventional Wisdom была создана как форум для открытых публичных дискуссий о функциях языка и движка; ее использование сократилось с 2011 года. [ необходима цитата ]

В 2012 году был запущен OpenCFML Foundation. Его функция — продвигать приложения и платформы CFML с открытым исходным кодом .

Бывший ведущий разработчик Railo Майкл Оффнер запустил Lucee , ответвление Railo , в Лондоне 29 января 2015 года. Целью проекта, поддерживаемого сторонниками сообщества и членами Lucee Association, является обеспечение функциональности CFML с использованием меньшего количества ресурсов, повышение производительности и вывод CFML за рамки его корней в современную и динамичную платформу веб-программирования.

Синтаксис

Теги CFML имеют формат, аналогичный тегам HTML. Они заключены в угловые скобки (< и >) и обычно имеют ноль или более именованных атрибутов , хотя некоторые теги (например, cfset, cfif) содержат выражение, а не атрибуты. Многие теги CFML имеют тела; то есть у них есть начальные и конечные теги с текстом для обработки между ними. Например:

<cfoutput>  # значение # Боб! </cfoutput>

Другие теги, такие как cfset и cfftp, никогда не имеют тел; вся необходимая информация находится между начальным символом (<) и конечным символом (>) в форме атрибутов тега (пар имя/значение), как в примере ниже. Если допустимо, чтобы теги не имели тела, синтаксически приемлемо оставлять их незакрытыми, как в первом примере, хотя многие разработчики CFML предпочитают самозакрывать теги, как во втором примере, чтобы (возможно) сделать код более разборчивым.

<cfset  value  =  "Привет" > <cfset  value  =  "Привет"  / >

Даже если тег может иметь тело, включение тела может быть не обязательным в некоторых случаях, поскольку атрибуты определяют всю необходимую информацию. В этих случаях, как во втором примере выше, конечный тег (и, следовательно, тело тега) может быть опущен, и тег может быть самозакрывающимся, как в следующем примере: [8]

< cfexecute  name = "C:\\winNT\\System32\\netstat.exe"  arguments = "-e"  outputfile = "C:\\Temp\\out.txt"  timeout = "1"  />

Различные теги предлагают возможность проверки типов входных параметров (например, cffunction, cfparam, cfqueryparam), если программист специально объявляет их тип. Эта функциональность используется с cfqueryparam для защиты веб-приложений и баз данных от хакеров и вредоносных веб-запросов, таких как SQL-инъекция .

Встроенные теги

Почти 100 тегов и множество других функций составляют основу языка CFML. Ниже приведен список тегов CFML по их функциям или назначению. [9]

Пользовательские теги

CFML допускает языковые расширения в виде пользовательских тегов, которые являются тегами, созданными разработчиком, которые не являются частью самого языка CFML. Пользовательские теги — это обычные файлы CFML, которые предназначены для вызова в качестве тегов, хотя можно рассматривать шаблон как пользовательский тег, так и обычный шаблон. Пользовательские теги пишутся на CFML и обычно вызываются путем добавления префикса cf_ к имени файла пользовательского тега , хотя существуют и другие способы вызова пользовательских тегов.

Если шаблон вызывается как пользовательский тег, атрибуты, используемые для вызова этого тега, доступны внутри тега в области атрибутов , а переменные для вызывающей страницы доступны через область вызывающего объекта .

Например, если написать пользовательский тег для выполнения сложения , взяв два атрибута и сложив их вместе, тег будет представлять собой файл addition.cfm, который может выглядеть следующим образом:

<cfset  caller.addition  =  attribute.first  +  attribute.second  / > < cfexit  method = "exitTag"  />

Предполагая, что тег находится в том же каталоге, что и файл (или в предопределенном каталоге customtags), его можно вызвать следующим образом:

< cf_addition  первый = "1"  второй = "2" >

Теги CFX — это пользовательские теги, которые разрабатываются с использованием Java или C++ и имеют префикс cfx_, как и cf_. Теги Java и C++ добавляются в среду выполнения CFML с помощью администратора движка CFML или путем редактирования файлов конфигурации.

В некоторых движках CFML теги JSP также могут быть включены в страницы CFML с помощью тега <cfimport>. [ необходима ссылка ]

Функции

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

функцияссылкакод
Множество[10](ArraySort, ArrayAppend, ArrayDeleteAt...)
Конверсия[11](URLEncodedFormat, ToString...)
Дата и время[12](LsTimeFormat, DateAdd, DateDiff...)
Решение[13](Определено, IIF...)
Отображение и форматирование[14](CJustify, NumberFormat...)
Динамическая оценка[15](DE, Оценить...)
Расширяемость[16](СоздатьОбъект, ToScript...)
Изображение[17](Поворот изображения, Добавление границы изображения...)
Международные функции[18](Установить локаль, Получить информацию о часовой пояс...)
Список[19](FindOneOf, ListSetAt...)
Математический[20](Случайный порядок, квадрат...)
Другие функции[21](WriteOutput, GetBaseTemplatePath...)
Запрос[22](ЗапросДобавитьСтолбец, ЗапросУстановитьЯчейку...)
Безопасность[23](Шифрование, расшифровка...)
Нить[24](Обратный, HTMLCodeFormat...)
Структура[25](StructKeyExists, StructDelete...)
Система[26](GetTickCount, GetTempFile...)
XML[27](XMLParse, GetSOAPResponse...)

Компоненты ColdFusion (CFC)

CFC предоставляют некоторые (не все) типичные функции и возможности, предоставляемые объектно-ориентированными (ООП) языками. Чтобы создать CFC:

Создайте файл с расширением .CFC (это отличает CFC от шаблонов ColdFusion, которые имеют расширение .CFM).
Используйте четыре тега для создания компонентов, определения их функций и аргументов , а также возврата значения.
<cfcomponent>: определяет CFC
<cffunction>: определяет функции (методы) в CFC
<cfargument>: определяет аргументы (параметры), которые принимает функция.
<cfreturn>: Возвращает значение или результат функции

CFC — это простые CFML. В CFC могут использоваться любые теги CFML, функции, пользовательские теги, другие компоненты и т. д.

CFC можно использовать различными способами. Если метод, содержащийся в CFC, просто нужно вызвать, тег <cfinvoke> создаст экземпляр CFC, вызовет нужный метод, а затем уничтожит экземпляр CFC. <cfinvoke> принимает имя компонента (без расширения .cfc) и метод для выполнения. Для доступа к любым возвращаемым данным атрибут RETURNVARIABLE предоставляет имя переменной, содержащей все, что возвращает функция. CFC создаются с использованием четырех тегов, сохраняются как файлы .CFC и вызываются с использованием тега <cfinvoke>. [28]

В примере ниже компонент temperature.cfc имеет метод FtoC, который преобразует температуру из градусов Фаренгейта в градусы Цельсия. Шаблон test.cfm вызывает метод и преобразует 212 градусов Фаренгейта и выводит результат.

<!--- температура.cfc ---> <cfcomponent>  <cffunction  имя = "FtoC"  доступ = "public"  возвращаемый тип = "numeric" >  <cfargument  имя = "fahrenheit"  обязательно = "yes"  тип = "numeric"  / >  <cfset  ответ =  ( fahrenheit  -  32 ) * 100 / 180  / >  <cfreturn  ответ  / >  </cffunction> </cfcomponent> <!--- тест.cfm ---> <cfset  fDegrees  =  212  / > <cfinvoke  компонент = "температура"  метод = "FtoC"  возвращаемая переменная = "результат" >  < cfinvok  имя аргумента = "fahrenheit"  значение = "#fDegrees#"  /> </cfinvoke> <cfoutput> # fDegrees # ° F = # результат # ° С </cfoutput>  < br  />

CFC также могут быть созданы как объекты. Если предположить, что файл CFC называется Person.cfc, то экземпляр этого CFC будет создан следующим образом:

<cfset  person  =  CreateObject ( "component" ,  "Person" )  / >

CFC также формируют основу возможности создания веб-сервисов в CFML. CFC создается обычным способом, а атрибут access="remote", добавленный к любой функции в CFC, сделает эту функцию доступной для вызова в качестве веб-сервиса на основе SOAP . Механизм CFML автоматически генерирует WSDL и создает все необходимые заглушки для функционирования веб-сервиса.

Ссылки

  1. ^ Adobe ColdFusion 8 – Об интернет-приложениях и серверах веб-приложений Архивировано 13 мая 2012 г. на Wayback Machine . Livedocs.adobe.com. Получено 17 сентября 2013 г.
  2. ^ Открыть руководство BlueDragon. Openbd.org. Получено 17 сентября 2013 г.
  3. ^ Смит, Майкл Что такое ColdFusion? fusionauthority.com
  4. Теги Архивировано 24 марта 2008 г. на Wayback Machine
  5. ^ Серия интервью с руководящим комитетом Open BlueDragon – Алан Уильямсон. alan.blog-city.com
  6. ^ О Railo Архивировано 30 июня 2011 г. на Wayback Machine . Getrailo.org. Получено 17 сентября 2013 г.
  7. ^ http://corfield.org/entry/CFML_Advisory_Committee Архивировано 07.01.2009 в Wayback Machine CFML Advisory Committee – An Architect's View. Corfield.org. Получено 21.07.2013.
  8. Синтаксис тега Архивировано 27 мая 2008 г. на Wayback Machine
  9. ^ Теги по функции Архивировано 09.05.2008 на Wayback Machine . (PDF) Получено 17.09.2013.
  10. ^ Функции массива Архивировано 10 декабря 2008 г. на Wayback Machine . Livedocs.adobe.com. Получено 17 сентября 2013 г.
  11. ^ Функции преобразования Архивировано 08.12.2008 на Wayback Machine . Livedocs.adobe.com. Получено 17.09.2013.
  12. ^ Функции даты и времени Архивировано 2008-12-02 на Wayback Machine . Livedocs.adobe.com. Получено 2013-09-17.
  13. ^ Функции принятия решений Архивировано 01.02.2009 на Wayback Machine . Livedocs.adobe.com. Получено 17.09.2013.
  14. ^ Функции отображения и форматирования Архивировано 20 декабря 2008 г. на Wayback Machine . Livedocs.adobe.com. Получено 17 сентября 2013 г.
  15. ^ Динамические функции оценки Архивировано 2008-12-07 на Wayback Machine . Livedocs.adobe.com. Получено 2013-09-17.
  16. ^ Расширяемость Архивировано 14 февраля 2009 г. на Wayback Machine . Livedocs.adobe.com. Получено 17 сентября 2013 г.
  17. ^ Функции изображения Архивировано 31 января 2009 г. на Wayback Machine . Livedocs.adobe.com. Получено 17 сентября 2013 г.
  18. ^ Международные функции Архивировано 2009-02-08 на Wayback Machine . Livedocs.adobe.com. Получено 2013-09-17.
  19. ^ Список функций Архивировано 10 декабря 2008 г. на Wayback Machine . Livedocs.adobe.com. Получено 17 сентября 2013 г.
  20. ^ Математические функции Архивировано 2008-12-07 на Wayback Machine . Livedocs.adobe.com. Получено 2013-09-17.
  21. ^ Другие функции Архивировано 30 января 2009 г. на Wayback Machine . Livedocs.adobe.com. Получено 17 сентября 2013 г.
  22. ^ Функции запросов Архивировано 21.02.2009 на Wayback Machine . Livedocs.adobe.com. Получено 17.09.2013.
  23. ^ Функции безопасности Архивировано 2008-12-05 на Wayback Machine . Livedocs.adobe.com. Получено 2013-09-17.
  24. ^ Строковые функции Архивировано 29.01.2009 на Wayback Machine . Livedocs.adobe.com. Получено 17.09.2013.
  25. ^ Структурные функции Архивировано 14 февраля 2009 г. на Wayback Machine . Livedocs.adobe.com. Получено 17 сентября 2013 г.
  26. ^ Системные функции Архивировано 01.02.2009 на Wayback Machine . Livedocs.adobe.com. Получено 17.09.2013.
  27. ^ Функции XML Архивировано 20 февраля 2009 г. на Wayback Machine . Livedocs.adobe.com. Получено 17 сентября 2013 г.
  28. ^ Форта, Бен Использование компонентов ColdFusion. adobe.com
  • Документация CFML поддерживается сообществом.
  • CFML за 100 минут — введение в основы языка CFML.
  • Учебная программа, реализуемая при поддержке сообщества, которая обучает основам CFML.
  • Команда CFML Slack
  • CFQuickDocs — Справочник тегов и функций ColdFusion.
  • Люси
  • Открыть BlueDragon
  • BlueDragon
  • Раило
  • Группа Google CFML «Общепринятая мудрость»
  • Консультативный комитет CFML (сейчас этот комитет не функционирует)
Retrieved from "https://en.wikipedia.org/w/index.php?title=ColdFusion_Markup_Language&oldid=1231890568"