Fork me on GitHub
12/12/2006

Выбор веб-фреймворка: Nevow без прикрас

Сегодня очередь Nevow - веб-фреймворка, построенного поверх Twisted. Информацию о том, что представляет собой Nevow и как его использовать можете посмотреть в Введении в Nevow, а сегодня я рассказываю о своем впечатлении о Nevow.

Что пишут

Прежде чем взяться за Nevow я посмотрел, что же пишут о нем люди, уже попробовавшие его: Дункан МакГреггор от Nevow просто в восторге:

Хотя скорость разработки важна, нужно учитывать не только ее. Все говорят о том, как быстро можно развернуть проект используя веб-фреймворк X, и т.д. Но где то, что имеет больший приоритет для меня: насколько это подходит мне? Могу ли я сделать всё что захочу? После того, как дело сделано, могу ли добавить или убрать что-нибудь? Могу ли я сделать неожидаемые изменения быстро и просто, без ущерба целостности архитектуры?

И еще: могу ли я строить свои системы с ним?

И вот где я в востороге от Nevow. Мне комфортно с его дизайном, шаблонами, "внутренностями" и свободой для программиста. [...] Nevow дает те инструменты и тот уровень комфорта, которые позволяют мне строить расширяемые системы легко и просто

На русском гораздо менее экспрессивно про Nevow сказал Дмитрий Кузнецов:

Занялся я освоением этого замечательного инструмента. Он всем замечателен и мне нравится, кроме одного - отсутствия документации. К сожалению, python для меня еще язык новый, в процессе изучения, так сказать, поэтому по коду самого фреймворка ориентируюсь довольно плохо. Короче говоря, достаточно непростое дело получается. Это не Smarty, где когда мне понадобился универсальный pager, Google меня привел прямо к плагину для фреймворка, который полностью удовлетворил мои нужды :) . А здесь замечателен только сам фреймворк. С сервером Twisted можно творить чудеса. Плагинов и кода написанного для фреймворка - что кот наплакал. Примеры, конечно, есть, но их ооочень мало. Документация - меньше десятка туториалов да скудненький мануал. А жаль.

Что думаю я

Я думаю, что Nevow был конкурентноспособен до появления нового поколения веб-фреймворков: Django, TurboGears, Pylons. Как только стали доступны эти инструменты, Nevow обречен на вымирание, как динозавр. Даже его преимущество (преимущество для меня в данной конкретной ситуации) - интеграция с Twisted - не способно перевесить недостатки. И самый главный недостаток - отсутствие внятной документации.

Чтобы написать мое тестовое приложение, мне пришлось не только прочитать всю документацию по Nevow, просмотреть все докстринги в nevow.rend, изучить невнятные примеры, но и поискать Nevow-проекты при помощи google/codesearch, а также поизучать код Prairie wiki и Pymon. Для сравнения: в Django достаточно пройти один туториал и прочитать две страницы документации. И еще один момент "для сравнения": на написание Nevow-проекта мне понадобилось времени в несколько раз больше, чем на Django и Pylons вместе взятых.

Далее, не просто применение, а поощрение порочной практики смешивания логики и представления. Сплошь и рядом, в документации, в примерах, используется nevow.loaders.stan - построение DOM HTML-документа средствами Python.

Следущий момент, который заслуживает отдельного внимания, потому что я достаточно долго бился с ним. Формы. Уже во "Введении в Nevow" я обозначил некоторые проблемы Nevow-инструментов для обработки форм. Так вдобавок, ни formless, ни formal не имеют документации вообще, только примеры, причем с использованием nevow.loaders.stan. Но это еще не все. Обработка форм настолько кривая, что мне пришлось хачить ее для своего случая. Я не хочу особо вдаваться в подробности, лишь кратко скажу, что форма отрисовывается в фрагменте, а обрабатывается в странице, содержащей этот фрагмент. Ну и из-за абсолютно глупых ограничений, мне пришлось использовать механизм сессий, хотя в Django и Pylons я вполне успешно обошелся без них.

В итоге, я думаю, что потрачу меньше времени и усилий, а сам процесс мне будет более приятен, если буду использовать Django или Pylons, пусть даже мне и придется продумывать протокол обмена Twisted-сервиса и веб-фронтенда. Сухой остаток - Nevow не мой выбор.

Код тестового приложения можно взять с code.google.com.

P.S. Уже после того, как приложение было написано, я встретил еще пару обзоров Nevow. Все они не слишком свежие (2005г), но с того времени в Nevow особо ничего не поменялось:

Комментарии

Все статьи