Как мне разработать приложения для web 2.0 с CGI.pm? - PullRequest
6 голосов
/ 14 ноября 2008

Несколько лет назад я много работал с CGI.pm. Я оцениваю его использование снова для быстрого проекта. Может кто-нибудь познакомить меня с текущим состоянием разработки с CGI.pm в мире "Web 2.0"? Какие библиотеки на CPAN лучше всего использовать с ним? Существуют ли чистые способы включения jQuery, YUI, других CSS-библиотек и т. Д. И создания AJAX. Конечно, на CPAN есть много библиотек, но что работает и что обычно используется?

Мы еще не занимаемся этим?

$JSCRIPT<<EOF;
...
EOF

Я понимаю, что люди собираются предложить Catalyst в качестве ответа. Тем не менее, многие люди могут иметь старые приложения CGI.pm, которые они просто хотят улучшить. Действительно ли начинать сначала - лучший ответ?

Ответы [ 9 ]

11 голосов
/ 14 ноября 2008

Лично я не фанат Catalyst (слишком тяжелый на мой вкус) или Mason (смешивать код и HTML - это плохо, но я неплохо использую CGI.pm для ввода [1], HTML: : Шаблон для вывода и CGI :: Ajax для обеспечения функциональности AJAX, где это необходимо.

Если вы смотрите на фреймворки, вы также можете рассмотреть CGI :: Application, которая является широко используемой и более легкой альтернативой Catalyst / Mason.

[1] Я не могу вспомнить, когда в последний раз я вызывал что-то кроме $ q-> param или $ q-> cookie из CGI.pm. Есть еще много учебных пособий, в которых говорится, что они должны использовать функции генерации HTML, но они все еще смешивают код и HTML так же плохо, как и при использовании здесь документов, если не хуже.

4 голосов
/ 14 ноября 2008

Рассмотрите возможность использования чего-то более современного, например, Catalyst . Это сделает вашу жизнь намного проще, и вам не придется изобретать велосипед. Я понимаю, что это всего лишь небольшой проект, но из моего опыта многие небольшие проекты со временем становятся крупными:)

3 голосов
/ 14 ноября 2008

Да, вы можете писать совершенные веб-приложения для web2.0 БЕЗ использования любой инфраструктуры на стороне сервера на любом языке Perl, Python, Java и т. Д. И БЕЗ использования любых библиотек JavaScript / инфраструктуры на стороне клиента. Определение web 2.0 является довольно слабым определением, и я предполагаю, что под web2.0 вы подразумеваете Ajax или частичное обновление страницы, тогда все, что вам действительно нужно, это сосредоточиться на следующем:

  1. Информация об объекте XmlHttpRequest.
  2. Знать, как вернуть объект JSON с сервера на клиент.
  3. Знать, как безопасно оценивать / анализировать объект JSON с помощью JavaScript, и знать, как управлять DOM. Кроме того, хотя бы знать о innerHTML. InnerHTML полезен иногда.
  4. Знать CSS.

Сказав это, гораздо проще использовать некоторые фреймворки на стороне сервера, но не потому, что это требуется web2.0, и намного проще использовать некоторые JavaScript на клиенте, такие как jQuery, mootools, YUI. И вы можете смешивать и сочетать в зависимости от ваших потребностей и ваших вкусов. Большинство JavaScript предоставляет обертку вокруг XmlHttpRequest, чтобы он работал во всех браузерах. Никто больше не пишет «голый» XmlHttpRequest, если вы не хотите показывать некоторые образцы.

3 голосов
/ 14 ноября 2008

Приложения "web 2.0", с которыми я работал, обычно используют клиентский JavaScript для запроса JSON данных с сервера, а затем используют эти данные для обновления страницы на месте через DOM.

Модуль JSON полезен для возврата структурированных данных в браузер.

Что касается включения JavaScript, HTML или чего-либо еще в документ здесь - это было никогда хорошей идеей, и до сих пор нет. Вместо этого используйте один из множества шаблонных модулей, которые можно найти в CPAN. Для CGI я бы избегал «тяжелых» модулей, таких как Mason или Template Toolkit, и использовал бы более легкий модуль для более быстрого запуска, такой как Text :: Template или Template :: Simple .

2 голосов
/ 14 ноября 2008

С помощью CGI.pm можно писать приложения «Web 2.0», но вам придется делать всю работу самостоятельно. Из того, что я видел, в сообществе разработчиков Perl основное внимание уделялось разработке структур-преемников CGI, а не написанию вспомогательных модулей, позволяющих старым приложениям загружаться в современные парадигмы. Так что вы в некоторой степени одиноки.

Что касается того, начать ли сначала, чего вы на самом деле пытаетесь достичь? Каждое определение "Web 2.0" несколько отличается.

Если вы пытаетесь внедрить несколько современных функций (например, AJAX) в унаследованное приложение, то нет необходимости начинать все сначала.

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

1 голос
/ 13 декабря 2010

Для новых приложений, если вы не нашли Catalyst на свой вкус, Dancer - еще одна легкая платформа, которая вам может понравиться. Есть также много других, в том числе CGI :: Simple, Mojo / Mojolicious, Squatting ...

Любая из этих облегченных сред может позаботиться о скучных частях веб-программирования для вас, и позволит вам писать забавные части так, как вы хотите.

1 голос
/ 14 ноября 2008

Если переход с CGI.pm на Catalyst кажется слишком пугающим, то, возможно, что-то вроде Приседание может быть более подходящим?

Приседания - это веб-микрофрейм, и я нашел его идеальным для быстрого прототипирования и для замены / обновления моих старых CGI-скриптов.

Недавно я создал небольшое приложение "web 2.0" с приседаниями, используя jQuery, без каких-либо проблем. Внутри дистрибутива CPAN есть пример каталога, который содержит некоторые программы, использующие jQuery и AJAX, включая очень интересный пример [COMET] (http://en.wikipedia.org/wiki/Comet_(programming)), в котором используется Continuity (который приседает на корточки по умолчанию).

NB. При необходимости вы можете позже «приседать» на Catalyst с помощью Squatting :: On :: Catalyst

1 голос
/ 14 ноября 2008

Я согласен с ответом Адама, вы, вероятно, хотите использовать Catalyst. При этом, если вы действительно не хотите, ничто не мешает вам использовать только CGI.pm. Дело в том, что Catalyst - это набор пакетов, которые делают вещи, которые вы хотите сделать Web 2.0 легкими. Он объединяет различные движки шаблонов, такие как Template Toolkit или Mason, с различными интерфейсами ORM, такими как DBIx :: Class и Class :: DBI.

Конечно, вам не нужно использовать эти вещи для написания приложений Web 2.0, это просто хорошая идея. Отчасти ваш вопрос заключается в том, что javascript и CSS-фреймворки, такие как jQuery или прототип, требуют чего-либо из серверного кода. Это не так, вы можете использовать их с любым видом серверного кода, который вам нужен.

0 голосов
/ 13 декабря 2010

Существует также CGI :: Ajax .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...