Яндекс.Метрика

    Реклама

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

    Конечно, полноценную 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 $
    Контакты

    $ content $
    Почта: example@mail.ru
    ICQ: 123456789


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

    $ title $
    Персональный сайт

    $ author $
    Василий Пупкин


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

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


    Автоматически сгенерировать меню SNAC, конечно, не сможет, но зато если вы самостоятельно добавите меню в шаблон страницы, то ссылке на текущую страницу будет присвоен класс snac-current. Таким образом можно выделить текущую страницу в меню.

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

    Можно запускать сайт вообще без веб-сервера! (Из-за политик безопасности получится не во всех браузерах.)

    Как работает


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

    Далее (по событию onhashchange) аяксом получается файл с содержанием страницы, парсится и опять же скармливается шаблонизатору. Полученный код записывается в тег body.

    Аналоги


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

    Уверен, что найдется еще не один аналогичный проект. В любом случае SNAC делался в основном для личного использования и just for fun.

    Демо


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