2008-11-14 16 views
6

Hace unos años trabajé mucho con CGI.pm. Estoy evaluando usarlo de nuevo para un proyecto rápido. ¿Puede alguien actualizarme sobre el estado actual de desarrollo con CGI.pm en el mundo "Web 2.0"? ¿Cuáles son las mejores bibliotecas en CPAN para usar con ella? ¿Hay formas claras de incluir jQuery, YUI, otras librerías de CSS, etc. y hacer algo de AJAX? Por supuesto, hay muchas bibliotecas en CPAN, pero ¿qué funciona y qué se usa comúnmente?¿Cómo desarrollo aplicaciones web 2.0 con CGI.pm?

Todavía no estamos haciendo esto?

 
$JSCRIPT<<EOF; 
... 
EOF 

Me doy cuenta de que la gente va a ofrecer Catalyst como respuesta. Sin embargo, muchas personas pueden tener aplicaciones heredadas CGI.pm que simplemente desean mejorar. ¿Comenzar de nuevo realmente es la mejor respuesta?

Respuesta

11

Personalmente, no soy fanático de Catalyst (demasiado pesado para mi gusto) o Mason (mezclar código y HTML es malo ju-ju), pero lo hago bastante bien usando CGI.pm para entrada [1], HTML :: Plantilla para salida, y CGI :: Ajax para proporcionar funcionalidad AJAX donde sea necesario.

Si está buscando en frameworks, también puede considerar CGI :: Application, que es una alternativa ampliamente utilizada y más liviana a Catalyst/Mason.

[1] No recuerdo la última vez que llamé a algo que no fuera $ q-> param o $ q-> cookie de CGI.pm. Todavía hay muchos tutoriales que dicen usar sus funciones de generación de HTML, pero eso sigue mezclando código y HTML de una manera tan mala como usar aquí documentos, si no es que peor.

+0

Acerca de [1]: ¡Amén! Ese debate ha estado en curso desde que CGI.pm fue el "nuevo calor" propuesto como reemplazo de cgilib.pl. Obviamente, cabezas sanas no prevalecieron en esa discusión. :-(¿Has probado usar CGI :: Lite en su lugar? –

+0

He considerado cambiar a CGI :: Simple, pero no estaba al tanto de CGI :: Lite. Tendré que agregar eso a mi lista de módulos para investigar en mi copioso tiempo libre –

+0

Y también hay CGI :: Lazy que se ve interesante ... http://search.cpan.org/dist/CGI-Lazy/lib/CGI/Lazy.pm – draegtun

4

Considere usar algo más moderno, por ejemplo Catalyst. Hará tu vida mucho más fácil y no tendrás que reinventar la rueda. Entiendo que es solo un proyecto pequeño, pero de mi experiencia muchos pequeños proyectos en el tiempo se vuelven grandes :)

+0

¿Qué hace con las aplicaciones heredadas que ya usan CGI.pm? –

+0

A partir de su pregunta inicial comprendí que desea construir un nuevo proyecto, no modificar una aplicación heredada. –

+0

Estaba tratando de ofrecer una razón para obtener una buena respuesta a mi pregunta. Hay muchas respuestas en este sitio que dicen usar Catalizador. Ese es realmente el único juego en la ciudad? Hay libs de Perl jQuery y AJAX. ¿Hay algo más bueno? –

2

Es perfectamente posible escribir aplicaciones "Web 2.0" usando CGI.pm, pero tendrás que hacer el trabajo tú mismo. Por lo que he visto, el enfoque en la comunidad de desarrollo de Perl ha sido desarrollar marcos de referencia para CGI, no escribir módulos de ayuda para permitir que las aplicaciones heredadas se arranquen en los paradigmas modernos. Entonces estás un poco solo.

En cuanto a si volver a empezar, ¿qué estás realmente tratando de lograr? La definición de "Web 2.0" de todos es algo diferente.

Si intenta introducir algunas características modernas (como AJAX) en una aplicación heredada, entonces no hay ninguna razón para que deba volver a empezar.

Por otro lado, si intenta escribir algo que realmente se ve, se siente y funciona como una aplicación web moderna (por ejemplo, alejarse de la carga de página es un modelo de aplicación-estado), probablemente debería considere comenzar desde abajo. Tratar de hacer que gran parte de una transformación ocurra después del hecho va a ser más problemas de lo que vale para cualquier cosa que no sea la más trivial de las aplicaciones.

1

Acepto la respuesta de Adam, es probable que desee utilizar Catalyst. Dicho eso, si realmente no quieres, no hay nada que te impida usar solo CGI.pm. El caso es que Catalyst es una colección de paquetes que hacen las cosas que desea para que la Web 2.0 sea más fácil. Combina los diversos motores de plantillas como Template Toolkit o Mason con las diversas interfaces ORM como DBIx :: Class y Class :: DBI.

Ciertamente no tiene que usar estas cosas para escribir aplicaciones Web 2.0, es una buena idea. Parte de su pregunta se pregunta si los marcos de JavaScript y CSS como jQuery o prototipo requieren algo del código del lado del servidor. No es así, puede usarlos con cualquier tipo de código de servidor que desee.

1

Si el salto de CGI.pm a Catalyst parece demasiado desalentador, ¿quizás algo así como Squatting podría ser más apropiado?

Squatting es un microframework web y lo he encontrado ideal para el prototipado rápido y para reemplazar/actualizar mis viejos scripts CGI.

Recientemente construí una pequeña aplicación "web 2.0" con Squatting usando jQuery sin problemas. Dentro de la distribución de CPAN hay un directorio de ejemplo que contiene algunos programas que usan jQuery y AJAX, incluido un muy interesante [COMET] (http://en.wikipedia.org/wiki/Comet_(programming)) ejemplo que hace uso de Continuity (que se pone en cuclillas "squats" de forma predeterminada).

NB. Si es necesario, luego puede "poner en cuclillas" su aplicación en Catalyst con Squatting::On::Catalyst

+0

Bueno, mi primer par de grietas en la instalación de Catalyst no funcionó en Fedora FC9 x64. Hice algunos informes web simples con CGI.pm esta mañana. Jugaré Catalyst cuando tenga algo de tiempo para quemarlo y hacerlo instalar. –

+0

El catalizador a veces puede ser un problema cargar algunas veces http://draegtun.wordpress.com/2008/06/16/installing-catalyst-on-production-server-yesterday/ – draegtun

+0

La posición en cuclillas es mucho más fácil de cargar. Sin embargo, hay (o hubo) algunos problemas con Coro 4.8 http://groups.google.co.uk/group/squatting-framework/browse_thread/thread/3e879ae9f2e41d7f – draegtun

3

Las aplicaciones "web 2.0" con las que he trabajado usualmente utilizan JavaScript del lado del cliente para solicitar JSON datos del servidor, luego los utiliza para actualizar la página en el sitio a través de DOM.

El módulo JSON es útil para devolver datos estructurados a un navegador.

En cuanto a incluir JavaScript, HTML, o lo que sea en un documento aquí - que fue nunca una buena idea, y todavía no lo es. En su lugar, use una de la plétora de módulos de plantillas que se encuentran en CPAN. Para un CGI, evitaría los módulos "pesados" como Mason o Template Toolkit, y usaría un módulo más ligero para un inicio más rápido, como Text::Template o Template::Simple.

3

Sí, puede escribir aplicaciones web2.0 perfectas sin usar ningún marco en el lado del servidor en ningún idioma Perl, Python, Java, etc. y SIN usar bibliotecas/marcos de JavaScript en el lado del cliente. La definición de la web 2.0 es una especie de definición poco precisa, y supongo que por la web 2.0, que quiere decir Ajax o actualización de la página parcial, entonces todo lo que realmente se necesita es centrarse en lo siguiente:

  1. Saber sobre el objeto XmlHttpRequest.
  2. Sepa cómo devolver el objeto JSON del servidor al cliente.
  3. Sepa cómo evaluar/analizar de forma segura el objeto JSON utilizando JavaScript y saber cómo manipular el DOM. Además, al menos saber sobre innerHTML. InnerHTML es útil ocasionalmente.
  4. Conoce CSS.

Una vez dicho esto, es mucho más fácil de usar algún tipo de marco en el lado del servidor, pero no porque sea requerido por la web 2.0 y que es mucho más fácil de usar algo de JavaScript en el cliente como jQuery, Mootools, YUI . Y puede mezclar y combinar según sus necesidades y gustos. La mayoría de JavaScript proporciona un envoltorio alrededor de XmlHttpRequest para que funcione en todos los navegadores. Nadie escribe XmlHttpRequest "desnudo" más, a menos que quiera mostrar algunas muestras.

1

Para las nuevas aplicaciones, si no encuentra Catalyst a su gusto, Dancer es otro marco liviano que le puede gustar. También hay muchos otros, incluyendo CGI :: Simple, Mojo/Mojolicious, Squatting ...

Cualquiera de estos marcos livianos puede encargarse de las partes más aburridas de la programación web, y le permite seguir escribiendo las partes divertidas de la manera que desee.

Cuestiones relacionadas