CMS на стороне клиента

27 Авг
2011

Конечно, полноценную CMS на стороне клиента реализовать невозможно (никто и не пытается). Но если у вас есть сайт на бесплатном хостинге, нет серверных скриптов, но хочется развернуть что-то более сложное, чем сайт-визитка на полутора страницах, то можно попробовать облегчить себе жизнь с помощью SNAC.

Что он умеет?


SNAC — аббревиатура от SNAC is Not at All a CMS. Это должно как бы намекать, что особого функционала от него ждать не стоит. Практически единственная вещь, которую он позволяет делать — это отделение оформление сайта от его содержания.
Ссылка на демонстрацию — в конце топика.
Если вы используете SNAC, то оформление вашего сайта задается единым шаблоном, а все его содержание хранится в отдельных текстовых файлах. Одна страница — один текстовый файл. Например, вот так может выглядеть шаблон:
<h1><$= this.title $></h1>
<h2><$= this.header $></h2>
<div id="content"><$= this.content $></div>
<div id="footer">&copy; <$= this.author $></div>

А вот так — файл с содержанием одной из страниц:
$ header $<br>
Контакты<br>
$ content $<br>
Почта: example@mail.ru<br>
ICQ: 123456789

Также существует файл с «глобальным содержанием», то есть содержанием, одинаковым для всех страниц сайта. Туда можно поместить, например, название сайта и текст футера:
$ title $<br>
Персональный сайт<br>
$ author $<br>
Василий Пупкин

Если автор сайта внезапно решит сменить имя, то обновить футер на всем сайте можно будет, отредактировав только один файл.

Еще кое-какие возможности


Автоматически сгенерировать меню SNAC, конечно, не сможет, но зато если вы самостоятельно добавите меню в шаблон страницы, то ссылке на текущую страницу будет присвоен класс
snac-current
. Таким образом можно выделить текущую страницу в меню.
Можно сделать собственную страницу, отображающуюся при ошибке 404 (обычно на бесплатных хостингах не дают настроить эту возможность).
Можно запускать сайт вообще без веб-сервера! (Из-за политик безопасности получится не во всех браузерах.)

Как работает


SNAC работает очень просто. Сначала он аяксом загружает шаблон страницы и «компилирует» его с помощью шаблонизатора jQote2. В откомпилированном виде шаблон представляет собой javascript-функцию, которая на вход получает объект с содержанием страницы, а на выход дает код страницы.
Далее (по событию
onhashchange
) аяксом получается файл с содержанием страницы, парсится и опять же скармливается шаблонизатору. Полученный код записывается в тег
body
.

Аналоги


Поверхностное гугление выявило только Xanjax. Но то ли я такой тупой, то ли действительно с ним что-то не так, но только толком разобраться с ним мне не удалось. На сайте автор пишет, что скорее всего с первого раза сайт на Xanjax не заработает, и что для полноценной работы с ним нужно думать out of the box. Такой подход мне как-то не по душе.
Уверен, что найдется еще не один аналогичный проект. В любом случае SNAC делался в основном для личного использования и just for fun.

Демо


Сайт работает на SNAC, оттуда же можно его скачать, там же документация. Исходный код есть на Google Code.
По материалам Хабрахабр.



загрузка...

Комментарии:

Наверх