Обзор библиотек для замены View в Code Igniter
В прошлой статье «Недостатки View в Code Igniter» я ругал стандартный механизм работы с View. Всю печаль от использования стандартных отображений я познал еще на заре погружения в CI. Быстро пробежавшись по форумам, выбрал для себя решение от SamDark, которое называлось просто View. К слову, использую её и по сей день.
Но вот зреет крупный новый проект, и необходимо выбрать новое решение (или согласиться с тем, что старое вполне себе годится). Поэтому сегодня будет обзор библиотек для работы с отображениями. Только сразу договоримся, что рассматривать шаблонизаторы и парсеры — не будем. Это тема для отдельной статьи.
Зачем использовать сторонние библиотеки
Стандартная работа с отображением в Code Igniter неудобна (ссылку на обзор давал в начале статьи). К тому же в сторонних библиотеках есть масса удобных фишек:
- Есть главный шаблон (layout), который можно сменить на лету из контроллера (у меня, к примеру, есть 2 layout’a для вывода контента: с левым сайдбаром и без него);
- Агрегатор JS/CSS (в зависимости от страницы я подключаю jquery, flot, table-sorter. Грузить все это добро на главной — незачем);
- Некоторые библиотеки умеют минимизировать JS/CSS код, собирая его в один файл;
- Работа с блоками, меню, хлебные крошки и т д;
Качества и возможности библиотек для работы с View
1. Простота и легкость кода. В результате каждого запроса пользователя будет вызываться библиотека для работы с View. Чем больше в ней кода и лишнего функционала — тем больше будет расходоваться ресурсов сервера.
2. Функционал. В противовес к пункту № 1. Минимализм — это хорошо. Но базовый функционал должен присутствовать.
3. Активность разработки. Библиотека может быть супер хорошей, но если единственный разработчик бросил её 3 года назад, то все найденные баги будете править сами. Про новый функционал так же можно позабыть. Рано или поздно может настать такой момент, когда новая версия фреймворка просто окажется с ней несовместимой.
4. Блоки. При создании порталов часто возникает необходимость оперировать блоками (menu, sidebar, content, footer). Если вы планируете использовать гибкую структуру страниц — обратите внимание на библиотеки с подобным функционалом.
5. Конфликт с другими библиотеками. Обычно есть 2 причины конфликтовать — необычный механизм загрузки (хуки, переопределение сторонних библиотек) или использование стороннего шаблонизатора (Smarty, Twig, Dwoo) совместно с библиотекой.
6. Простота установки и обновления. Чем меньше файлов нужно скопировать/настроить тем лучше. К тому же, большим плюсом является наличие проекта на github и/или поддержика установки через sparks. Sparks — это мегаудобная библиотека-загрузчик и консольная утилита, позволяющая в два клика устанавливать библиотеки для Code Igniter.
Заканчиваем лирическое вступление, переходим к обзору библиотек для замены стандартного механизма View в Code Igniter. К сожалению, авторы не блещут креативом, и почти все библиотеки называются одинаково.
Обзор
Для удобства последующего выбора библиотек разделим их на 3 категории. От гигантских комбайнов до небольших поделок.
«Комбайны»
Ocular Template Library — Умеет работать с блоками. Есть встроенный механизм генерации меню и «хлебных крошек». Для инициализации использует код в MY_Loader. Если у вас уже есть этот файл в проекте (к примеру от HMVC) — произведите аккуратное совмещение, либо — погуглите на предмет совместной работы. По заверениям автора — Ocular работает совместно с HMVC.
Внимание, автор проводил нагрузочное тестирование с помощью siege: демо-проект со стандартным View и тот же самый проект с Ocular. Падение производительности составило около 20%, поэтому прежде чем использовать у себя этого монстра, исследуйте его на своем проекте.
«Средняя весовая категория»
Template Library (by Colin Williams) — Умеет работать с блоками. Умеет использовать сторонние шаблонизаторы (подобная фишка заявлена только у этой библиотеки). Самый большой минус — не обновлялась с 2008 года.
Template Library (by coolweb.ru) — Умеет работать с блоками. Не обновлялась с 2009 года. Используется MY_Loader.
Code Igniter Template (by Phil Sturgeon, sparks) — Более 100 Watcher’ов на github. Есть встроенный механизм генерации «хлебных крошек». Может использовать стандартный Parser, либо же свою библиотеку для работы с Dwoo.
«Легковесы»
Почти все перечисленные ниже библиотеки не только имеют одинаковое название, но и имеют одинаковый функционал.
Сodeigniter Template (by duellsy)
Code Igniter Template (by hovatterz, sparks)
Code Igniter Contentful (by Shawn Dellysse, sparks) — Использует хелпер для вывода информации в шаблон. По мне — так много лишних функций приводит к захламлению шаблонов. Не понравился.
Code Igniter Layout (by Richard Davey, sparks) — Использует хуки для инициализации папки с шаблонами.
View (by SamDark) — Не обновлялся с весны 2010 года.
Сводная таблица
|
PS. Очень понравилась библиотека Template от Phil Sturgeon и Ocular Template Library.
Стандартных View более чем достаточно. Переопределите класс CI_Controller (нужно делать MY_Controller) и перед вызовом любого метода любого контроллера делайте before и after. В before проверяйте авторизацию и прочие плюшки, в after пихайте все данные в $this->load->vars($data); и вызывайте корневую view. Которая соберёт страницу.
никакого мусора, всё красиво и прозрачно.
ах да, я уже об этом писал в статье по ссылке.
@IAD
Гибкость и возможности будет страдать.
Если использовать выше описанные библиотеки только для упрощения передачи переменных и вложенных View — то да, подойдет и ваш вариант.
Но ведь там есть и другой, очень полезный функционал.
Ocular Template Library ссылка не работает! Подскажи есть ли документация на русском языке? Если есть дай ссылку пожалуйста!
@Ded
На русском языке документации и не было.
Документация на английском доступна здесь: https://github.com/lonnieezell/Ocular-Template-Library/wiki/
Понял, спасибо хорошая статья!
Спасибо! Очень интересно и полезно! Сам недавно начал искать подобное для большого проекта… А у Вас все описано и с ссылками! 🙂