Дмитрий Сергеевич (axshavan) wrote,
Дмитрий Сергеевич
axshavan

  • Mood:

Размышления о вебе


В процессе работы с мисатиным Балом, я размышлял на тему удобства программирования скриптов под движок и в голове моей родились идеи относительно того, как можно было бы его организовать.
Движок состоит из трех более-менее независимых частей - 1) система ведения сессий со своими таблицами, 2) система формирования данных для шаблонов, 3) процессор шаблонов.
Про 1 и 3 особо ничего не расскажешь. Система ведения сессий уже есть готовая у меня, ее можно только переделать немного. Когда я обнаружил, что все объекты типа mysqldb вне зависимости ни от чего все равно используют одно и то же соединение к серверу БД и к собственно БД, необходимость в таких объектах отпала. Это к примеру то, что можно переделать. Как выглядит процессор шаблонов, я могу только примерно предполагать. Что-нибудь мощное и навороченное типа смарти я писать не буду, мне оно на х не впилось, напишу что-нибудь простенькое, основанное на регекспах и без кеширования. Кеширование можно будет приделать потом, если приспичит, только я пока еще не придумал, как его организовать. Наверное, таблица нужна дополнительная, в которой хранятся названия и даты откомпилированных шаблонов. Только тогда нужно, наверное, процессор шаблонов инициализировать до того, как начнется формирование страницы... хз, короче.
А вот само формирование страницы я задумал сделать модульное - мне так понравилось работать с модулями в Бало. Вообще страница будет состоять только из модулей, причем модули могут быть внутри модулей. Тут я вспомнил, как, по слухам, организовано свамп.фото у Шерда - там скрипты вроде как вызываются шаблонами. Сначала я подумал, что это говенная идея, а на самом деле интересная.
Итак, сначала вызывается скрипт основного модуля страницы. То есть сначала не вызывается, а прогоняется регекспом для поиска функций, название которых соответствует некому соглашению об именах. Зачем? А вот зачем. Вместо того, чтоб писать в начале скрипта include('вот этот файлик, в котором лежит моя функция, и еще вот этот, и вот тот');, можно просто использовать функции с соглашением об именах. Движок просмотрит тект скрипта регекспом и сам подключит все необходимые функции. Каждую в отдельности.
Я еще не решил точно, хранить либо каждую функцию в отдельном файлике либо сваливать их в базу - идеологически не превалирует ни то, ни другое. Но если их в файликах держать, то редактировать проще. Наверное, все же в файликах.
Потом выполняется скрипт основного модуля с уже подключенными функциями и скармливыается процессору шаблонов. Тот берет нужный шаблон (тоже из файлика, а не из базы, чтоб редактировать проще было), и, если надо, подключает еще файлы модулей в нужных местах. И так далее рекурсивно. Для большей идеологической красоты можно действительно сначала инициализировать процессор шаблонов и скармливать ему стандартный шаблон типа {insert script="default_page"} (синтаксис типа смарти, уж простите, привык), чтоб он взялся за него. Тогда разницы между 2 и 3, фактически, и не ощущается... ладно, это не так уж и важно. Скрипты берут данные из БД, процессор кует хтмл из шаблонов, страница потом вываливается в браузер. Всё!
Насчет "красивости урл". У меня произошло внутренне отторжение mod_rewrite для апача потому что я не смог его у себя настроить. Поэтому в ближайшее время настраивать не буду, и, хотя движок будет его поддерживать, он будет работать и с урл следующего вида: mysite.ru/?bla-bla-bla/. Знак вопроса будет просто отрезаться.
Таким образом, "чистый" движок будет генерировать исключительно одну-единственную пустую страницу, зато через жопу кувырком. Админка, естественно, будет написана под сам движок, то есть те же модули, те же шаблоны, что и для всего прочего сайта.
Tags: web
Subscribe

  • Post a new comment

    Error

    Comments allowed for friends only

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 2 comments