Escolar Documentos
Profissional Documentos
Cultura Documentos
es
Pero en cuanto empiezas a investigar sobre este lenguaje te das cuenta de que forma
un ecosistema brutal, y te sientes perdido entre tanta librera, framework, plugin, etc...
He escrito este artculo para guiarte en esta selva que es el desarrollo web (En su parte
Frontend principalmente).
A menos para que sepas qu es cada librera, por qu surgi, cul es su objetivo y
por qu fue sustituida por otra.
Vanilla JavaScript
Al principio era la nica forma de utilizar JavaScript en las pginas web, pero poco a
poco se ha ido complicando.
jQuery
jQuery es una librera de JavaScript que facilita el desarrollo con ste lenguaje.
jQuery Mobile
jQuery tambin lanz jQuery Mobile que bsicamente se trataba de una versin
reducida de jQuery y optimizada para dispositivos mviles que en ese
momento estaban empezando a surgir.
jQuery Mobile tuvo un antecesor que fue jQuery UI, un set de recursos tanto CSS como
JS para implementar interfaces grficas. La versin mobile fue una adaptacin de sta.
jQuery UI fue el predecesor de los frameworks CSS que surgieron. Hay infinidad de
ellos, pero los que son ms utilizados son Bootstrap y Foundation.
Bootstrap
ste framework fue creado por un empleado de Twitter y lo liber como Open Source.
Foundation
Foundation es el otro gran combatiente en sta batalla por el control del CSS.
jQuery estaba y sigue estando muy extendido, pero a medida que las aplicaciones
web implementaban cada vez ms funcionalidades y complejidad, jQuery se
haca inmanejable. Llamadas AJAX, cambios de vista, etc..
Backbone JS
Fue creado por Jeremy Ashkenas, autor tambin de la librera Underscore, y del
precompilador CoffeeScript.
Ember JS
Ember es otro framework de la familia MVC. No lo conozco mucho porque no he
trabajado con l, pero las bases son similares a Backbone. Es muy popular por los
desarrolladores en Ruby on Rails.
Angular JS
Puedes construir directivas para extender el HTML de tus aplicaciones web, etc...
Esto hace que sea un framework ms pesado, pero del que puedes sacar mucho
partido. Su curva de aprendizaje es como una montaa rusa, pero una vez que
entiendes gran parte de su funcionamiento te resultar muy rpido crear aplicaciones
web.
Con la llegada de NodeJS y su popularidad, surgi el stack MEAN compuesto
por Mongo como Base de Datos, Express y NodeJS como lenguaje y framework del
servidor y AngularJS para la parte cliente. ste stack se ha hecho tan popular o ms
como lo fue en su da el stack LAMP (Linux + Apache + MySQL + PHP).
Y lleg NodeJS
Node.js supuso una revolucin en el mundo del desarrollo web. De repende los
programadores que se encargaban de la parte Frontend de las aplicaciones podan
entrar en el mundo Backend, ya que NodeJS es la forma de poder programar
con JavaScript en el servidor.
Adems del mundo backend, con NodeJS surgieron varias herramientas para mejorar
los desarrollos y hacerlos ms giles.
Grunt
Despus de Grunt vino Gulp, que utilizando los Streams que proporciona NodeJS hizo
ms sencilla la implementacin y ejecucin de las tareas que hacamos antes
con Grunt.
Browserify
En medio de estos dos grandes surgi Browserify, una librera que permita llevar el
modo de programacin que se estaba empleando en NodeJS al lado
cliente. Ahora podas importar mdulos con el comando require sin necesidad
de tener una rista (Lista larga) de scripts en el HTML.
Webpack
Y ofrece algo muy interesante, el Hot Loader, permitindonos ver los cambios que
hacemos mientras desarrollamos, sin perder el estado de la aplicacin. Algo que Gulp
no nos permite hacer.
En un momento haba muchas herramientas que permitan que una web pudiera
ser empaquetada como una app mobile (Phonegap), pero la experiencia de
usuario y el uso era un infierno.
Ionic
Por suerte, Phonegap evolucion a Cordova, y surgi Ionic, una librera basada en
Angular que nos permite crear aplicaciones mviles para Android e iOS
programando nicamente en JavaScript y empaquetndolo con Cordova.
Todo es genial, podemos hacer aplicaciones de una sola pgina con AngularJS,
programar el backend y el frontend empleando JavaScript, incluso aplicaciones
mviles sin cambiar de lenguaje ni de stack.
A da de hoy tenemos formularios, inputs, tablas, encabezados, etc.. Pero cada vez ms
surgen nuevos patrones de diseos, repetitivos y no hay un estndar para eso.
En nuestras webs todos tenemos mens, navbars, mapas de google maps, videos de
youtube, etc... Su cdigo HTML es ilegible, convirtindose en una montaa de
divs anidados. (Aprovecho para recomendar ste artculo de Elena Torr)
Los WebComponents tratan de solucionar eso, y sta especificacin surgi a la par que
AngularJS y sus directivas
Polymer
Polymer est creciendo mucho y es una parte importante en esta guerra por el trono
de scripts :P
React
React no es un framework como Angular, es nicamente una librera (como poda ser
jQuery, o Polymer) diseada nicamente para la interfaz grfica. Puedes combinarla
con cualquier framework o utilizar Vanilla JavaScript.
Flux
Facebook por su parte dise Flux, una arquitectura para crear aplicaciones
web con React, pero sin usar ningn Framework, nicamente JavaScript puro sin
aadidos.
Es una definicin un poco complicada de digerir al principio, pero una vez que la
conoces, no quieres desarrollar de otra manera :D
Ahora las pginas web son aplicaciones y JavaScript se queda corto, de ahi el
nacimiento de frameworks como Angular, o de precompiladores como CoffeeScript
para traducir a JavaScript.
Durante varios aos se ha ido definiendo la nueva versin del estndar, ECMAScript 6,
que provee clases, mdulos, nuevas funcionalidades, etc..
Se ha conseguido (en cierta medida) que incluso no sea necesario emplear frameworks
para desarrollar, nicamente con libreras podemos tener un stack muy poderoso.
Babel JS
Ah surge Babel (anteriormente conocido como 6to5) que nos permite escribir
cdigo ES6 y que sea traducido a ES5 (La versin anterior del estndar que
conocen todos los navegadores)
Aplicaciones Isomrficas
Una aplicacin SPA (Single Page Application) tarda un tiempo en cargarse, pero luego
la velocidad de pgina y la UX es muy buena. Pero a cambio pierdes el SEO que te
proporciona una pgina renderizada en el servidor.
Es el futuro.
Angular hasta ahora era el dominante en el mundo de los frameworks de JS. Pero
React le ha estado comiendo terreno. Y Polymer tambin en cierta medida.
Angular tambin tiene un peso importante dentro del desarrollo hbrido con Ionic,
pero la llegada de React Native tanto para iOS como para Android, le puede
relegar, ya que con React Native no estamos haciendo una aplicacin hbrida, estamos
desarrollando una aplicacin nativa pero utilizando JavaScript para ello.
Angular 2.0
La nueva versin del framework de Google cambiar mucho la forma de
programar con respecto a las versiones 1.x, ser mucho mejor, usando ms
recursos nativos.
El problema est que cambia tanto que una versin 1.x no es compatible con la 2.0, por
lo tanto si quieres actualizar, tendrs que reescribir todo.
Otro problema es que est tardando mucho en aparecer. Ya hay una versin alpha,
pero an tardar en ser estable y utilizarse. Y mientras tanto React le est comiendo
terreno.
Ionic 2
En la parte mobile, React tambin esta pegando fuerte con Native y eso est haciendo
que Ionic pierda fuelle, pero la gente detrs de Ionic est trabajando codo con codo
con la gente detrs de Angular 2 para hacer un framework ms poderoso.
Entonces Qu elijo?
En estos casos siempre digo que elijas la librera, lenguaje, herramienta con la que te
sientas ms cmodo. Olvdate de modas, y utiliza lo que te haga ms productivo
y sobre todo te divierta desarrollando.
En mi caso me encuentro muy cmodo con Angular 1.x y utilizando Gulp para
automatizar tareas.
Polymer no lo he probado an, pero tengo ganas por los comentarios que me llegan
de medio GDG Espaa :D
Lo que no puedes hacer es reescribir toda tu aplicacin en un nuevo framework slo
por el hecho de que lo est petando. Te acabar volviendo loco.