Использование готовых решений в web-разработке

Введение

Одним из залогов успешного выполнения проекта, является правильное его проектирование. Творческое и свободное мышление являются очень полезными качествами для любого проектировщика, но как показывает практика, такое мышления часто приводит к изобретению очередного велосипеда. В итоге тратится много времени и сил на разработку инструментов и интеграцию их между собой, а также на отладку их правильной работы. И чаще всего такие решения являются не самыми лучшими в своём роде, в ближайшем будущем они требуют переделок или, что ещё хуже, «забивания костылей» (то есть, исправления кода, противоречащего всяким законам хорошего стиля программирования).

Но есть другой подход к проектировке. Уже на данном этапе (и на всех проектировочных этапах реализации проекта) есть возможность выбрать наиболее подходящие готовые решения для разработки продукта. Здесь также есть свои тёмные стороны:

·  иногда готовые решения работают не совсем в той логике, к которой привык разработчик

·  иногда в готовых решениях встречаются неотловленные (и трудноотлавливаемые) ошибки

·  иногда разные готовые решения имеют плохую интеграцию между собой (или вообще таковой не имеют)

Но в любом случае применение готовых решений может существенно сократить время разработки и увеличить её эффективность, а также качество конечного продукта. В этой статье будут рассмотрены некоторые типы готовых решений, применяющихся в web-разработке, а также будут даны подробные их примеры (но они были подобраны исходя из личных предпочтений, серверный язык php, клиентский javascript, база дынных MySQL).

НЕ нашли? Не то? Что вы ищете?

Готовые решения для разработки web-приложений

Framework

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

·  Интегрировать новые модули и затачивать их под свой движок становится всё сложнее и занимает это непростительно много времени (если мы их вообще интегрируем, не будем говорить о той ситуации, когда разработчик ВООБЩЕ не прибегает к помощи готовых модулей)

·  Мы понимаем, что делаем раз за разом те же самые операции, которые до нас делало множество человек

·  Моя проектировка приложения оказывается не достаточно актуальной и мощной

А чтобы избежать подобного, перед разработкой любого web-приложения стоит рассмотреть, нельзя ли применить для этого один из фреймворков. Серверный фреймворк – это каркас для нового web-приложения, который не только обладает набором встроенных библиотек и большим количеством уже разработанных модулей, но, что самое главное – он задаёт направление мысли программиста и ставит его в некие рамки. Вот некоторые из фреймворков на php:

·  Symphony

·  Zend Framework

·  CodeIgniter

·  Kohana

Возьмём, к примеру, замечательный фреймворк Kohana. Вот некоторые из его особенностей:

1.  Паттерн MVC (всё приложение разбивается на модели, виды и контроллеры)

2.  Система чистых ссылок (пути вида www. *****/bar/foo)

3.  Набор библиотек и хелперов для выполнения наиболее распространённых для web-приложений операций. (redirect, ответ на ajax-запрос, xss-фильтрация, работа с сессиями и т. д.)

4.  Мощная модульная структура, а также каскадная файловая система (если в двух разных модулях есть два одинаковых файла в идентичных директориях, то подключен будет файл из модуля, подключённого позднее)

5.  Встроенный профайлер

6.  Локализация

7.  Встроенные ORM и query builder (библиотеки для объектно-ориентированной работы с базой данных)

8.  Система событий

9.  И ещё многое другое

CMS

Двигаемся дальше: мы выбрали framework и работаем теперь на нём (разрабатывая в данном случае достаточно стандартное web-приложение). Но у нас опять же возникают проблемы:

·  Framework не заточен под управление контентом. Не умеет работать с картой сайта. Не имеет таких понятий как «материал», «меню», «хлебная крошка» и тому подобных

·  Интегрировать новые модули всё ещё сложно. Приходится разбираться в тех тонкостях модуля, которые не являются для нас необходимыми. Всё ещё нужно конфигурировать их перед использованием

·  Хорошую административную панель самому сделать очень сложно (тем более программисты редко понимают, что такое хороший user-frendly интерфейс)

·  Клиенты недовольны, что для любого малейшего изменения на сайте (которое мы не предусматривали) приходится либо лезть в код, либо звать разработчика

Выходом из такой ситуации является использование готового решения заточенного специально под наши нужды. Если нам приходится иметь дело со стандартным web-приложением, то сложно найти лучшее решение, чем CMS – систему управления контентом. Она реализует такие вещи, как: управление картой сайта, категоризация материалов, разграничение доступа пользователей к различной информации, быстрая смена вида (шаблона) сайта, локализация, более тесная интеграция модулей, функциональная и удобная административная панель и другие.

Вот некоторые из самых распространённых CMS на php:

·  Joomla

·  Typo3

·  MODx

·  Drupal

Одной из самых гибких и многофункциональных CMS на php является Drupal, вот некоторые из её достоинств:

1.  Практически любой контент на сайте можно представить универсальным типом «материал»

2.  Материалы не привязываются жёстко к какому-либо узлу на карте сайта

3.  Система таксаномии (очень гибкой категоризации материалов)

4.  Любой набор из материалов может быть выведен в любой узел карты сайта на основе таксаномии (а также на основе любых других полей при наличии модуля Views)

5.  К материалам можно добавлять дополнительные поля (расширение cck, к примеру, если у нас есть тип материала «товар», то мы можем добавить к нему поле «цена»)

6.  Гибкая и мощная система API

7.  Интеграция с jQuery (фреймворк под javascript)

8.  Автоматическая локализация модулей

9.  Удобная локализация контента

10.  Русскоязычное сообщество

11.  Огромное количество готовых модулей

12.  И МНОГОЕ другое

Другие готовые решения для разработки web-приложений

Ещё есть множество готовых решений, типа: форумов (например, phpBB), социальных сетей, интернет-магазинов, блогов. Выбирайте и пользуйтесь на здоровье (психическое в первую очередь).