stringtranslate.com

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

Язык разметки ColdFusion , более известный как CFML , — это язык сценариев для веб-разработки, который работает на виртуальной машине Java (JVM), платформе .NET и 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, который была первой Java-реализацией языка CFML. (ColdFusion был написан на C и C++ до тех пор, пока в 2002 году не была выпущена версия 6.0, первая версия на основе Java.) Примерно в 2001 году New Atlanta лицензировала BlueDragon и сделала его доступным в качестве коммерческого продукта, в конечном итоге создав .NET -реализацию CFML. Open BlueDragon — это ответвление коммерческого продукта BlueDragon, впервые выпущенное в 2008 году.

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

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

В 2012 году был запущен Фонд OpenCFML. Его функция заключается в продвижении приложений и платформ 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"  аргументы = "-e"  выходной файл = "C:\\Temp\\out.txt"  timeout = "1"  />

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

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

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

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

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

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

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

<cfset  caller.addition  =  атрибуты.первый  +  атрибуты.второй  / > < метод cfexit  = «exitTag» /> 

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

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

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

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

Функции

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

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

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

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

ХФУ – это обычные CFML. В CFC можно использовать любой тег CFML, функцию, специальный тег, другие компоненты и т. д.

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

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

<!--- temp.cfc ---> <cfcomComponent>  <cffunction  name = "FtoC"  access = "public"  returntype = "numeric" >  <cfargument  name = "fahrenheit"  require = "yes"  type = "numeric"  / >  <cfset  ответ =  ( по Фаренгейту  -  32 ) * 100 / 180  / >  <cfreturn  ответ  / >  </cffunction> </cfcomComponent> <!--- test.cfm ---> <cfset  fDegrees  =  212  / > < cfinvoke  компонент = "температура"  метод = "FtoC"  returnvariable = "результат" >  < cfinvokeargument  name = "fahrenheit"  value = "#fDegrees#"  /> </cfinvoke> <cfoutput> # fDegrees # ° F = # результат # ° С </cfoutput>  < бр  />

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

<cfset  person  =  CreateObject ( «компонент» ,  «Человек» )  / >

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. ^ Открытая серия интервью Руководящего комитета BlueDragon - Алан Уильямсон. alan.blog-city.com
  6. ^ О Railo. Архивировано 30 июня 2011 г. в Wayback Machine . Getrailo.org. Проверено 17 сентября 2013 г.
  7. ^ http://corfield.org/entry/CFML_Advisory_Committee. Архивировано 7 января 2009 г. в Консультативном комитете CFML Wayback Machine - Взгляд архитектора. Корфилд.орг. Проверено 21 июля 2013 г.
  8. ^ Синтаксис тегов. Архивировано 27 мая 2008 г. на Wayback Machine.
  9. ^ Теги по функциям. Архивировано 9 мая 2008 г. на Wayback Machine . (PDF) Проверено 17 сентября 2013 г.
  10. ^ Функции массива. Архивировано 10 декабря 2008 г. на Wayback Machine . Livedocs.adobe.com. Проверено 17 сентября 2013 г.
  11. ^ Функции преобразования. Архивировано 8 декабря 2008 г. на Wayback Machine . Livedocs.adobe.com. Проверено 17 сентября 2013 г.
  12. ^ Функции даты и времени. Архивировано 2 декабря 2008 г. в Wayback Machine . Livedocs.adobe.com. Проверено 17 сентября 2013 г.
  13. ^ Функции принятия решений. Архивировано 1 февраля 2009 г. в Wayback Machine . Livedocs.adobe.com. Проверено 17 сентября 2013 г.
  14. ^ Функции отображения и форматирования. Архивировано 20 декабря 2008 г. на Wayback Machine . Livedocs.adobe.com. Проверено 17 сентября 2013 г.
  15. ^ Функции динамической оценки. Архивировано 7 декабря 2008 г. на Wayback Machine . Livedocs.adobe.com. Проверено 17 сентября 2013 г.
  16. ^ Расширяемость. Архивировано 14 февраля 2009 г. в Wayback Machine . Livedocs.adobe.com. Проверено 17 сентября 2013 г.
  17. ^ Функции изображения. Архивировано 31 января 2009 г. на Wayback Machine . Livedocs.adobe.com. Проверено 17 сентября 2013 г.
  18. ^ Международные функции. Архивировано 8 февраля 2009 г. в Wayback Machine . Livedocs.adobe.com. Проверено 17 сентября 2013 г.
  19. ^ Функции списка. Архивировано 10 декабря 2008 г. на Wayback Machine . Livedocs.adobe.com. Проверено 17 сентября 2013 г.
  20. ^ Математические функции. Архивировано 7 декабря 2008 г. в Wayback Machine . Livedocs.adobe.com. Проверено 17 сентября 2013 г.
  21. ^ Другие функции. Архивировано 30 января 2009 г. на Wayback Machine . Livedocs.adobe.com. Проверено 17 сентября 2013 г.
  22. ^ Функции запроса. Архивировано 21 февраля 2009 г. на Wayback Machine . Livedocs.adobe.com. Проверено 17 сентября 2013 г.
  23. ^ Функции безопасности. Архивировано 5 декабря 2008 г. в Wayback Machine . Livedocs.adobe.com. Проверено 17 сентября 2013 г.
  24. ^ Строковые функции. Архивировано 29 января 2009 г. на Wayback Machine . Livedocs.adobe.com. Проверено 17 сентября 2013 г.
  25. ^ Структурные функции. Архивировано 14 февраля 2009 г. на Wayback Machine . Livedocs.adobe.com. Проверено 17 сентября 2013 г.
  26. ^ Системные функции. Архивировано 1 февраля 2009 г. в Wayback Machine . Livedocs.adobe.com. Проверено 17 сентября 2013 г.
  27. ^ Функции XML. Архивировано 20 февраля 2009 г. на Wayback Machine . Livedocs.adobe.com. Проверено 17 сентября 2013 г.
  28. ^ Форта, Бен Использование компонентов ColdFusion. Adobe.com

Внешние ссылки