Easyweb: XSLT-движок для веба

12
~
На сайте с 04.07.2006
Offline
82
1281

Добрый день!

Easyweb - это верстальный движок общего назначения, выдающий XML-ответ по HTTP-запросу. В двух словах Easyweb - это склейка между абстрактными источниками данных и XSLT-версткой. Проект является сборником архитектурных и концептуальных идей, накопившихся за семь лет разработки для веба.

Что важно знать

Easyweb - это не CMS. В нем нет нескучных гуечков, конструктора страниц, и даже готовых шаблонов для SQL-запросов. Конфигурационные файлы - это XML, шаблоны страниц - это XSL, обработка POST-запросов - это PHP. Easyweb - это более низкоуровневый механизм, нежели CMS. Другими словами, CMS можно написать на Easyweb.

Кому это интересно

Скажу сразу, что большинству вебмастеров Easyweb будет не интересен. Если ваши задачи в вебе решаются на одной из существующих CMS с удовлетворяющими вас результатами, то Easyweb вам не нужен - у вас и так все хорошо. Easyweb будет интересен тем, кого по каким-либо причинам не устраивают существующие CMS, и кто задумывается о том, что нужно "написать все самому".

На данный момент

Easyweb находится в стадии устранения последних мелочей. Документация (на английском) написана, но пока что не корректировалась носителем языка, поэтому прошу отнестись с пониманием к грамматическим ошибкам. Документация все еще требует дополнений, но вкратце уже описывает все особенности движка. Тому, кто посчитает проект интересным, уже сейчас можно начинать следить за обновлениями и пробовать его в действии.

Технические вопросы

На данный момент движок работает через PHP-класс XSLTProcessor, который, в свою очередь, использует libxslt. Это значит, что возможно использование только XSLT 1.0 и XPath 1.0. Хорошей новостью является то, что XSLTProcessor в стандартной сборке поддерживает основную часть EXSLT. Как только в PHP появится стандартный модуль для работы с XSLT/XPath 2.0, он сразу же будет встроен в Easyweb.

В качестве API для доступа к СУБД используется PHP PDO, поэтому, теоретически, Easyweb поддерживает 12 типов СУБД (http://php.net/manual/ru/pdo.drivers.php), а также может быть легко адаптирован под любую другую СУБД, имеющую PDO-драйвер (достаточно засабмитить feature request с названием СУБД и ссылкой на ее PDO-драйвер).

С удовольствием выслушаю вопросы (и дам ответы), пожелания и предложения, а также троллинг, ололошечки и бугагашеньки.

Репозиторий: https://github.com/nyan-cat/easyweb

Документация: https://github.com/nyan-cat/easyweb/wiki

[Удален]
#1
~DEN~:
Документация (на английском) написана, но пока что не корректировалась носителем языка, поэтому прошу отнестись с пониманием к грамматическим ошибкам.

да на фига он на буржуйском, тем более с ошибками - даёшь русскую документацию!

S
На сайте с 23.05.2004
Offline
316
#2
Easyweb - это не CMS. В нем нет нескучных гуечков, конструктора страниц, и даже готовых шаблонов для SQL-запросов. Конфигурационные файлы - это XML, шаблоны страниц - это XSL, обработка POST-запросов - это PHP. Easyweb - это более низкоуровневый механизм, нежели CMS. Другими словами, CMS можно написать на Easyweb.

Не совсем понял, а в чем отличие вашего движка от функции xslt_process() ?

Это просто подпись.
SS
На сайте с 02.02.2009
Offline
116
#3
~DEN~:
это верстальный движок общего назначения

Проще говоря это обычный шаблонизатор?

~
На сайте с 04.07.2006
Offline
82
#4
Stek:
Не совсем понял, а в чем отличие вашего движка от функции xslt_process() ?

Ну хотя бы в том, что указанное вами API не поддерживается в PHP5, и, судя по всему, даже выпилено из PECL-а :) А вообще ответ совпадает с ответом на этот вопрос:

specialist-seo:
Проще говоря это обычный шаблонизатор?

Не совсем. Шаблонизатор - это XSLT. А Easyweb - это шаблонизатор + доступ к данным + роутинг запросов + система прав доступа + локализация (зачаточное состояние) + вспомогательные PHP-классы и фасилити. То есть - комплексное решение для веба, а не просто шаблонизатор.

SS
На сайте с 02.02.2009
Offline
116
#5

~DEN~, т.е. это CMF типа Yii как я понял.

hello world конечно интересно, но как-то сложновато, для одной странички, можно нормальные примеры посмотреть где-то.

Например, раздельную обработку POST и GET запросов, или что-то более приближенное к реальным задачам.

~
На сайте с 04.07.2006
Offline
82
#6
specialist-seo:
~DEN~, т.е. это CMF типа Yii как я понял.

Если вы про такой CMF, то да, Easyweb это скорее CMF :)

specialist-seo:

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

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

богоносец
На сайте с 30.01.2007
Offline
754
#7

И в первую очередь придётся познакомиться с XML?

~
На сайте с 04.07.2006
Offline
82
#8
богоносец:
И в первую очередь придётся познакомиться с XML?

Да, поскольку (как мы недавно выяснили) Easyweb - это CMF, то потребуются определенные программерские навыки, а именно:

  • Хорошее владение XML-технологиями: XSLT, XPath, XML;
  • Хорошее владение каким-нибудь SQL (если не хотите хранить все данные в XML-файлах);
  • Базовое владение PHP;
  • XHTML, CSS, JavaScript - если собираетесь делать веб-сайт (а не, например, XML-вебсервис);
  • Базовое администрирование *нуксов/*никсов - если собираетесь настраивать сервак самостоятельно.
S
На сайте с 23.05.2004
Offline
316
#9

В php 5 выкинули xslt ? Туда ему и дорога.

Честно говоря не понимаю смысла движка изивэба. Сам он ничего не умеет, только обвязка на шаблоне. При этом предлагается (в примере на сайте) код запроса в базу писать в самом шаблоне, т.е. то, от чего сейчас проекты стараются убежать.

~
На сайте с 04.07.2006
Offline
82
#10
Stek:
В php 5 выкинули xslt ? Туда ему и дорога.

Выкинули PHP XSLT (http://php.net/manual/ru/book.xslt.php), а PHP XSL (http://php.net/manual/ru/book.xsl.php) никуда не делся.

Stek:
Сам он ничего не умеет, только обвязка на шаблоне.

А что вы подразумеваете под "ничего не умеет"? Умеет верстать, умеет роутить HTTP-запросы, разбирать их на параметры, передавать параметры в шаблон, отделяет способ получения данных от способа их представления, разграничивает права доступа, позволяет делать мультиязыковые сайты... Или вам нужно что-то принципиально другое?

Stek:
При этом предлагается (в примере на сайте) код запроса в базу писать в самом шаблоне, т.е. то, от чего сейчас проекты стараются убежать.

Нет-нет-нет :) Запрос пишется в конфиге, а в шаблоне делается только вызов абстрактной процедуры. Шаблон не зависит от того, какая СУБД лежит за процедурой (и лежит ли вообще - за процедурой может скрываться SOAP-запрос, или JSON over HTTP). Вот два примера, как будет выглядеть верстка в самом шаблоне:


<!-- Шаблон-список лежит в отдельном файле -->

<www:xslt xsl="/books.xsl" xml="book:list(author_id -> 5)" />


<!-- Запрос и верстка в самом шаблоне -->

<xsl:for-each select="www:query('book:list', 'author_id -> 5')/books/book">
<h3><xsl:value-of select="title" /></h3>
<p>
<xsl:value-of select="description" />
</p>
</xsl:for-each>
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий