Здравствуйте.
Я написал WEB framework для собственных нужд, так как существующие меня не устраивали и хочу немного рассказать про него.
Вступление
WEB framework состоит из двух частей, одна серверная(написана на php), вторая клиентска(написаная на js). Серверная и клиентская части frameworka самодостаточны и являются работоспособны независимо одна от другой, но все же являются одним целым. Framework называется «W» и распространяется под лицензией MIT, исходный код можно скачать отсюда, отсюда.
Особенности
— Соответствует шаблону проектирования(патерну) MVC, более правильней MC-CV(M и одна часть C — находятся на сервере, а вторая часть C и V находятся на клиенте);
— Все http и https запросы протоколах к серверу выполняются асинхронно, все запросы, кроме первого(первый запрос загружает клиентскую часть frameworka);
— Данные форм также отправляются на сервер асинхронно(на данный момент отсутствует возможность загрузки файлов на сервер стандартными средствами(html и js));
— Каждый запрос возвращает минимально необходимое количество данных!
Клиентская часть реализована на js с использование библиотеки jQuery в виде jQuery плагинов;
— — warea — основной jQuery плагин для обеспечения асинхронной работы frameworka;
— — wajax — jQuery плагин выполнения асинхронный запросов по https протоколу(корректно работает в msie8, chrome8, opera11 и ff4(!));
— — wform — jQuery плагин для работы с формами;
— Серверная часть реализована на php в виде глобального объекта, к которому по древовидной иерархии подключаются все классы на индексной странице или по мере необходимости(что-то типа прототипа), что позволяет иметь доступ к любому объекту из любой части программы не прибегая к статическим свойствам и методам в классах;
— — упрощенный интерфейс работы с БД;
— — средства для работы Memcache(наличие средств блокировки ключей хэш таблицы);
— — встроенная система кэширования;
— — поддержка статические и динамические иерархий привилегий(динамические привилегии применимы к соц. Сетям, когда одну и туже страницу можно видеть по разному с одинаковой привилегией(статической), если в друзьях или в друзьях друзей);
— — глобальная система конфигурации;
— — полноценная поддержка UTF8;
— — наличие валидатора;
— Контроллер определяется настройками, а не произвольным кодом. Более правильным будет: Контроллер — это инструкция которая определяет какие данные и от каких экшенов передавать клиенту;
— Встроенная система кэширования данных моделей, которая зависит от GET параметров экшена(модуль, компонент. В состав экшена входят — модель, настройки, вид(обрабатывается на клиенте) и файлы локализации(обрабатываются на клиенте)) и привилегий(статической и динамической);
— формирование html фрагмента из данных полностью происходит клиенте, с сервера принимаются лишь «сырые» данные, возвращенные из каких либо хранилищ(чаще всего это БД);
— поддержка локализаций, реализуется и обрабатывается на клинте;
— ...
Итог
Что было более понят что и зачем, вот пример сайта написанного на W frameworke, вот архив с демо версией и инструкцией по установке. Какая либо документация на данный момент отсутствует. И еще одно, в силу конструктивных особенностей сайтов написанных на W frameworke, мой framework предназначен для написания каких либо интернет сервисов.
Если кому то понравился мой W framework или кто то будет его использовать — это будет круто. Со мной связаться можно здесь.