Главная
Новости
Статьи и обзоры
Горожанин
Обнинск в Internet
Web Design
Hardware
Software
Безопасность
Серфинг
Игродром
Relax
Технологии
Web-обзор
Интернет-ликбез
Опросник
УП-Технологии
ART.net
Ссылки
Архив
О нас
Контакты
Форумы
Основатель: К.Николаенко
Главный Редактор: С.Коротков
Web Design: Neutron
|
|
= Web-Дизайн =
PARSER: ТРЕТЬЯ БЕСПЛАТНАЯ ВЕРСИЯ
/продукт для генерации web-страниц/
Виктор Головко <lightnet@obninsk.ru>
по материалам сайта <www.parser.ru>
Эта версия доступна в исходных текстах, поскольку разработчики (студия Артемия Лебедева) считают, что ни одна закрытая технология не может долгое время оставться современной и актуальной.
На сайте доступны версии Parser для платформ win32? FreeBSD и Linux. Возможна также установка Parser в OpenBSD, Solaris и MacX. Документированные исходные тексты доступны на специальном CVS-сервере.
Хотя Parser вряд ли когда-нибудь станет конкурентом более известным технологиям для динамического создания веб-страниц, он все же достаточно активно используется в Рунете. Так что имеет смысл познакомиться с ним поближе, тем более что ы действительно существуют достаточно уникальные и интересные возможности, существенно упрощающие разработку сайтов.
В чем особенности третьей версии Parser? Почему на ее подготовку студия затратила более года? Во0первых, программисты переработали ядро, значительно улучшили синтаксис, добавили поддержку XML, XSL, XPath и DOM. Во-вторых, расширились возможности работы с базами данных. Предыдущая, вторая версия, представляла собой макроязык, ориентированный на работу с HTML. Сейчас Parser позиционируется как объектно-ориентированный язык. Это, конечно, шаг вперед, но считать Parser полноценным языком программирования пока рано.
УСТАНОВКА
Если вы используете IIS под Windows, то необходимо запустить Management Console и в Properties создать новую паку. Затем во вкладке Home directory, в разделе Application settings выбирается пункт Cofiguration. Здесь следует добавить новый пункт и в поле Executable задать полный путь к Parser. Для Extension следует указать расширение .html. Последнее, что необходимо сделать, - включить опцию Check that file exist.
Если же в качестве веб-сервера используется Apache, трудностей при установке тем более возникнуть не должно. Parser следует поместить в папку cgi-bin, а в .htaccess добавить строки:
AddHandler parsed-html html
Action parsed-html /cgi-bin/parser2.cgi
<Files ~ "\.cfg$">
Order allow,deny
Deny from all
</files>
В том случае, если вы пользуетесь русским Apache, добавьте еще одну строку:
CharsetrecodeMultipartForms Off
Вообще же, с учетом того, что Parser доступен в исходных текстах, можно собрать и собственный модуль для Apache.
РАБОТА
Идея, конечно, не нова - в HTML-страницы внедряются специальные конструкции, которые затем и обрабатываются Parser. Таким образом, используя функции и операторы языка, можно генерировать HTML-страницы, зависящие от действий пользователя и некоторых исходных данных, которые берутся, к примеру, из текстовых файлов или баз данных. Используя Parser, можно за счет применения макросов значительно сократить число повторяющихся частей документа. В сущности, Parser является CGI-инструментом (в чем-то подобным РНР), в котором реализованы некоторые специфические возможности.
В предыдущей версии языка одним из краеугольных понятий являлись макросы. Обычно они используются для описания элементов, которые многократно повторяются на HTML-страницах. Таким элементом может быть заголовок страницы, меню и т.д. Макрос обычно описывается в отдельном файле, а его вызов помещается в HTML-код. Редактируя его, можно вносить изменения сразу в несколько страниц.
Parser 2.0 имел возможность создания переменных, передаваемых между макросами и HTML-документом. В самом тексте макроса можно было использовать операторы и вызывать другие макросы. Тем самым макрос является полноценной функцией.
В третьей же версии создатели Parser пошли еще дальше. Почти уйдя от понятия макроса, они ввели классы, конструкторы, методы и функции, максимально приблизив Parser 3.0 по возможностям и синтаксису к объектно-ориентированным средствам разработки. Говоря честно, еще неизвестно, приведет ли подобное "опрограммливание" удобного для начинающих макроязыка для работы с HTML к положительным результатам. Перейдя из ранга "домашней разработки" на следующую, более профессиональную ступень, Parser неизбежно вступит в конкурентную борьбу с РНР, Perl и другими давно и хорошо себя зарекомендовавшими языками, применяемыми для генерации веб-страниц.
ПРИМЕР
Давайте посмотрим, как, используя новые возможности Parser 3.0, создать простейшую страницу с изменяемыми частями. К чести разработчиков нужно отметить, что они создали подробную и хорошо структурированную справочную систему, поэтому разобраться в хитросплетениях синтаксиса и особенностях технологии можно без труда.
Итак, нам нужна обычная веб-страница. Вернее, нужен их набор, где верхняя часть - шапка - одинакова для всех, на самих страницах расположен некий текст, а внизу находится дополнительная информация, также одинаковая для всех страниц. Разобьем страницу на три части: header(верхнюю часть), body(основной текст страницы) и footer(общуюю нижнюю часть). Теперь необходимо задать набор функций, которые будут генерировать нужные фрагменты кода страницы, а затем вызовем эти функции из HTML-файла.
Вначале создадим все функции, необходимые для генерации страницы. Поместим их в файл auto.p, который должен находиться в том же каталоге, что и HTML-страница, в котором по умолчанию Parser ищет вызываемые функции. С верхней частью HTML-документа все очень просто: в auto.p добавляем код, содержащий определение функции header:
@header[]
<html>
<meta http-equiv="Content-Type" content="texte/html;
charset=windows-1251">
<title>Страница </title>
</head>
<body bgcolor="#FFFFFF" texte="#000000">
Символ @ перед именем указывает, что далее следует определение функции. Кваратные скобки можно использовать для передачи параметров, которые в нашем случае отсутствуют.
Для вызова функции используется конструкция ^header[], которую можно применять как в HTML-документе, так и в других функциях. Символ ^, который ставится перед вызовом функций, указывает Parser, что далее следует исполняемый код. Прочий текст Parser пропускает без изменений. Любопытная деталь - данный указатель в документации на Parser и на сайте имеет несколько вариантов названия. Есть даже романтический вариант "птичка".
Средняя часть страницы, где необходимо вывести содержание, задается в файле auto.p функцией body. Единственное, что она делает - вызывает другую функцию - content, определение которой будет задаваться в теле самого HTML-документа, определяя его содержание:
@body[]
^content[]
Нижнюю часть нашей страницы создает функция footer, аналогичная header:
@footer[]
Если вам понравился мой рассказ, то можете написать мне по адресу pupkin@mail.ru
</body>
</html>
Теперь текст нашей страницы, предназначенной для обработки Parser, будет выглядеть так:
^header[]
^body[]
^footer[]
@content[]
Добро пожаловать!
Вы находитесь на главной странице моего сайта.
Во время обработки сначала вызывается функция header, которая выводит верхнюю часть страницы, затем функция body выводит текст, заданный в функции content на самой странице, и, наконец, функция footer завершает формирование страницы.
Разумеется, приведенный пример лишь самый тривиальный случай использования Parser. Третья версия имеет внушительный список возможностей для работы с базами данных, позволяет создавать собственные пользовательские классы, а также поддерживает Perl-совместимые регулярные выражения.
|
|