Continuando con la idea del desarrollo web en esta oportunidad les quiero hacer una comparación entre los frameworks web, porque ahora ya sabemos cual es su función y que tan importantes resultan para desarrollar páginas web dinámicas, aplicaciones web, servicios y recursos web. Estos tienden a brindar muchas facilidades para poder comunicarnos con una base de datos, manejar urls, sesiones de usuario y plantillas, es por esto que resulta interesante la elección de uno de ellos para lograr nuestro objetivo con la mejor herramienta que podamos.
Los frameworks que conozco trabajan bajo el Modelo, Vista y Controlador, normalmente encontrado bajo su forma abreviada MVC, esto significa que el proyecto se puede estructurar en:
En general todos estos Frameworks tienen:
Django
Viene la pregunta interesante ¿Cuál Framework usarías? Ciertamente depende de cada proyecto, tiempo y de tu equipo de trabajo.
Y ahora para saber que Framework les gustaría en próximos posts les dejo esta encuesta.
Si algo no queda muy claro siempre me pueden escribir a mi correo tonylattke@gmail.com o también pueden dejar comentarios al final de este post y trataré de ayudarles lo antes posible.
Los frameworks que conozco trabajan bajo el Modelo, Vista y Controlador, normalmente encontrado bajo su forma abreviada MVC, esto significa que el proyecto se puede estructurar en:
- Modelo: Permite comunicar con la base de datos y hacer todas las operaciones desde nuestro lenguaje que haga soporte al framework sin tener que tocar necesariamente el código SQL.
- Vista: Son el conjunto de herramientas que ayudan a manejar el HTML comunicado directamente con el sistema.
- Controlador: Es el encargado de todas las operaciones lógicas.
En general todos estos Frameworks tienen:
- Consola para realizar pruebas de tu proyecto.
- Manejador de librerías.
- Estructura de carpetas dividida en modelos, vistas, controladores y manejadores de rutas.
- Cuentan con una documentación oficial excelente.
- En todos incluyen etiquetas HTML que te permiten usar muy fácilmente operaciones del lenguaje de soporte.
Django
- Página oficial: www.djangoproject.com.
- Escrito en Python.
- Manejador de librerías: pip
- Ventajas:
- Tiene mucha documentación.
- Muchas librerías para descargar que ya tienen funciones que usamos comúnmente.
- Estructura totalmente personalizada del proyecto.
- Manejo de migraciones nativo makemigrations (gracias a Marcos Akerman y Juan Perozo por la información).
- El Admin por defecto de Django es muy fácil de usar.
- Desventaja: Al iniciar un proyecto pienso que se necesita invertir mucho tiempo para poder configurar el proyecto pero esto viene de la mano con su alto nivel de personalización.
- Blog que desarrolle para ver utilidades del framework.
- Página oficial: rubyonrails.org
- Escrito en Ruby.
- Manejador de librerías: gem
- Ventajas:
- Pienso que lo mejor es su estructura de trabajo que ya te incluye por defecto, la organización de un proyecto aquí es impecable.
- Ya trabajas bajo REST por defecto.
- Te da la posibilidad de incluir muchas gemas que funcionan bien y por tanto no existen muchos conflictos.
- Al igual que Django la documentación es muy buena.
- La base de datos al igual que en Django se genera y comunica una vez creado el modelo.
- Existen varios Admin dentro de las gemas de Ruby y son ciertamente muy buenos.
- Manejo de migraciones nativo.
- Puedes crear un modelo, vistas, controladores y manejo de pruebas usando sólo un comando Scaffold.
- Desventajas:
- La podrías ver como la perdida de control absoluto, ya que las libertades que te ofrece Django son un poco difícil de tener en Rails, porque necesitas alterar muchos archivos de configuración, pero ahora bien esto viene de la mano con la perspectiva de convention over configuration donde instalas y usas tus nuevas herramientas, que en la práctica es lo más común. Editado gracias a información de Bishma Stornelli
- Cada archivo estático que incluyas tienes que decirle donde se encentra para que al momento de compilar le genere la ruta, esto es un poco fastidioso de hacer por archivo.
- Blog que desarrolle para ver utilidades del framework.
- Página oficial: laravel.com
- Escrito en PHP.
- Manejador de librerías: artisan
- Ventajas:
- Existe mucha documentación.
- Muchos ejemplos.
- Gran cantidad de tutoriales en línea.
- Desventajas:
- No hay una consola para testing.
- PHP necesita que escribas mucho código para hacer cualquier función.
- Una librería de Admin no supe como agregarlo, capaz si hay alguna forma pero no la se aún.
- Código fuente del Blog que desarrolle para ver utilidades del framework.
- Página oficial: www.catalystframework.org
- Escrito en Perl.
- Manejador de librerías: cpan
- Ventajas:
- Tiene una estructura de trabajo muy buena al igual que rails, pero más simplificada, menos carpetas que te dejan revisar todo más rápido y fácil de leer.
- Tiene algo muy útil a la hora de usar los Handler (lo que equivale a los views de django) es que la variable que usa de contexto la puedes mover entre todas tus funciones y esto permite anexar y consultar todo lo que quieras en la consulta muy fácilmente.
- Los modelos se generan a partir del SQL, es decir si escribes tu SQL muy completo con tablas, indices y demás, al pasarselo el manejador, utiliza la información y crea los modelos.
- Desventajas:
- El problema de Catalyst es que la sintaxis de Perl es complicada y tarda cierto tiempo para acostumbrarse.
- Otra desventaja es que la documentación baja pero logras conseguir mucha información en su página oficial y de personas que hacen una publicación útil de vez en cuando.
- Una cosa que se vuelve un problema con Catalyst es su nombre a la hora de buscar algo te encuentras con cosas de AMD Catalyst y creo que por eso a veces puede que no se consiga la respuesta fácilmente.
- Una librería de Admin no supe como agregarlo, capaz si hay alguna forma pero no la se aún.
- Código fuente del Blog que desarrolle para ver utilidades del framework.
- Página oficial: www.yesodweb.com
- Escrito en Haskell.
- Manejador de librerías: cabal
- Ventajas:
- Es increíble, la estructura de archivos es super intuitiva.
- Tiene herramientas propias para trabajar todo el Frontend de la aplicación, ya que hace uso de sus propios lenguajes Shakespeare para trabajar con:
- HTML: Usas Hamlet eso te autocompleta de las etiquetas y generará por ti un correcto HTML con muy poco código.
- Javascript: Usas Julius, es igual que todo el Javascript normal, solo que puedes incluir código Haskell para hacer alguna función necesaria.
- CSS: usas Cassius, el cual tiene una sintaxis muy parecida a CSS pero sin llaves y por tanto se basa en la correcta identación. Puedes declarar variables que se pueden comunicar con el controlador del sistema. Pero como Cassius no era suficientemente mágico y existían SASS y LESS, los desarrolladores crearon Lucius en el que vuelven las llaves pero puedes usar los bloques y herencia tal cual como lo hace LESS y SASS.
- Además de todo eso en cada una tienes acceso a todas tus funciones que tienes en el contexto.
- La base de datos se genera también en base al modelo que declares, el cual también tiene un lenguaje especial que se llama persistent.
- Al igual que Catalyst tu mismo creas el modelo de usuario.
- El manejo de tipos de Haskell te permite saber que si ya compilo, entonces todo corre y por tanto grarantizas integridad dentro de tu sistema entre las vistas y controlador.
- Desventajas:
- No tienes casi ejemplos, la mejor es la que encuentras es la oficial, pero cualquier pregunta que tengas en Stackoverflow te las responden con mucha seguridad.
- Necesitas mucho conocimiento de Haskell para entender su funcionamiento, como en cualquier otro Framework, pero es un poco más difícil en este caso al sólo contar con la documentación oficial en un principio.
- Código fuente del Blog que desarrolle para ver utilidades del framework.
Viene la pregunta interesante ¿Cuál Framework usarías? Ciertamente depende de cada proyecto, tiempo y de tu equipo de trabajo.
Y ahora para saber que Framework les gustaría en próximos posts les dejo esta encuesta.
Si algo no queda muy claro siempre me pueden escribir a mi correo tonylattke@gmail.com o también pueden dejar comentarios al final de este post y trataré de ayudarles lo antes posible.








