¿Eres desarrollador web y estás a punto de comenzar un proyecto nuevo? ¿Te sientes frustrado porque es complicadísimo de manipular el javascript del proyecto en el que trabajas, o simplemente quieres estar al día en cómo se está moviendo el desarrollo Javascript? Este post puede resultarte interesante.
Tu Backend debe ser sí o sí un API, de preferencia REST
Si hablamos de Backend existentes, rápidamente escucharemos mencionar a los pesadísimos Webservices y su XML redundante, en el mundo corporate por todos lados veremos páginas Java generando JSP que a su vez arrojan el HTML, tenemos PHPs produciendo HTML, el punto es, pocos proyectos tienen un API propia, eso pareciera ser algo sólo para los grandes como Twitter, Facebook o Google Maps.
Las cosas han cambiado, actualmente tu Backend servirá para producir HTML que será visto en PCs, y probablemente tu proyecto tendrá versiones móviles, apps para televisores y claro, para el refrigerador. Si tu proyecto inicia teniendo como base de toda interacción un API, tu aplicación naturalmente estará lista para después tener una versión móvil, una app para el televisor o para algún cepillo dental con display que los japoneses pronto inventarán.
Si quieres mas información acerca de las REST API, google es tu amigo, en este artículo no pretendo entrar a detalle en aspectos técnicos de cómo hacer las cosas, nos enfocaremos en exponer los conceptos más importantes que se están moviendo hoy en día.
No vuelvas a producir HTML en tu BackEnd, sea la tecnología que sea, arroja sólo JSON y más JSON, así tendrás un Backend elegante, práctico y eficiente, además de versátil. Que sean tus diferentes clientes los que trabajen gracias a tu API, así es, leiste bien: HTML/Javascript será ahora tu cliente y de eso hablaremos en el siguiente punto.
Javascript debe ser el puto amo de tu FrontEnd
Probablemente estás trabajando en algún proyecto donde Javascript es sí o sí el nuevo jefe de jefes en tu Frontend (no lo descarto en el Backend), y seguramente algún Framework acompaña a tu código (jQuery, Dojo, MooTools, Backbone.js), y de eso quiero hablar. Mencionar al "mejor" Framework de Javascript es imposible, cada uno presume de serlo y algunos no necesariamente están peleados, por el contrario son compatibles y el uno necesita del otro.
He tenido la oportunidad de trabajar con todos los que menciono, describiré a cada uno:
- jQuery junto con jQuery UI es una interesante alternativa para enriquecer el DOM.
- Dojo es el Framework para el mundo corporate, intenta abarcar todo, components UI, utilerías, charts, lo que se te ocurra, pero sin ser en ninguna de esas aéreas el mejor (el que mucho abarca...).
- MooTools es compacto y el que más se preocupa por emular conceptos importantes en la OOP, como la herencia.
- Backbone.js, es algo cercano a un MVC tradicional, es flexible y a mi gusto se puede producir código muy elegante utilizándolo. No está peleado con FW como jQuery o MooTools pues tienen enfoques distintos.
- La lista de frameworks es grande, sólo mencioné algunos de los que he utilizado recientemente.
Lo que es un hecho es que todos los Frameworks actuales tienen utilerías para leer contenido AJAX, y la mayoría interpreta JSON sin problemas, y es aquí, en este punto, donde generamos la integración e interacción con nuestro API. Tendremos archivos HTML y Javascript que consumen nuestro API (como hacemos al consumir APIs de terceros) y estaremos preparados para cambiar nuestra app de plataforma con un esfuerzo mucho menor al requerido sin tener una API.
Si me preguntan por mi combinación favorita para comenzar un proyecto de FrontEnd, yo elegiría jQuery + Twitter Bootstrap(o en su defecto jQuery UI) junto con Backbone.js.
Cómo empezar: recursos disponibles
En este punto ya tienes una idea de cómo deben ser los nuevos Backends, un panorama de cuál puede ser la base de tu FrontEnd, pero tal vez aun tienes muchas dudas referentes a cómo empezar, por dónde debes iniciar. Es complicado incluir las respuestas a eso en un sólo post, sin embargo lo que sí puedo hacer es referenciarte a puntos de partida para tu nuevo proyecto HTML / Javascript. Mencionaré algunos de los recursos de hoy en día:
- HTML5 Boilerplate, es un template listo para que utilices HTML5 sin tener tantos problemas de compatibilidad. No es una solución perfecta, ni resuelve todos los problemas de compatibilidad, pero sin duda hace más ameno el desarrollo crossbrowser. Incluye también scripts ANT para minificar código, compactar imágenes entre otras tareas.
- Twitter Bootstrap, es un proyecto interesante de twitter que te permite enfocarte más en lógica de negocio y dejar de lado tareas comunes, como ventanas, layouts y botones, entre otras utilerías.
- Chrome - Developer Tools, es para mí la mejor herramienta para debuguear en Javascript, explorar el DOM, la actividad de la red, entre otras.
- Mi post tiene una clara inclinación a temas relacionados directamente con la programación, para temas como el CSS, el post de Neo es muy bueno, así como el de Freddie, que es un enfoque más general de como se están moviendo las cosas.
Sé que probablemente quedan muchas dudas, respecto a los Frameworks mencionados, así como de los conceptos platicados, respuestas que me resultaría difícil explicar sin extenderme a una gran pared de texto. En base a sus inquietudes principales, podría preparar algún otro artículo, enfocado mas a un "how to" en específico. El objetivo de este primer post, es mover un poco el paradigma (si es que aplica) de cómo en algunos casos se sigue trabajando. Si por ahí ya te entró la inquietud de leer más acerca de REST, probar otros Frameworks de JS, leer más acerca de Html5boilerplate o Twitter Bootstrap, creo que será la mejor ganancia de este tema.
¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Por vlycser el 30 de Mayo de 2012
Por Dano el 30 de Mayo de 2012
vlycser :
Es un tema interesante sin duda.
Mi caso particular(hablando del ultimo proyecto en el que participe) es un caso complejo y totalmente corporate, tres capas de seguridad:
Te recomiendo este articulo:
http://www.thebuzzmedia.com/designing-a-secure-rest-api-without-oauth-authentication/
Por alberto el 30 de Mayo de 2012
Por Deivinson Tejeda el 30 de Mayo de 2012
Saludos,
Por vlycser el 30 de Mayo de 2012
Dano :
Es un tema interesante sin duda.
Mi caso particular(hablando del ultimo proyecto en el que participe) es un caso complejo y totalmente corporate, tres capas de seguridad:
Te recomiendo este articulo:
http://www.thebuzzmedia.com/designing-a-secure-rest-api-without-oauth-authentication/
Gracias por responder a mi duda. Pero aun sigo sin saber como autenticar las peticiones a la API puesto que mi cliente esta en HTML/JS y no puedo almacenar ningún tipo de llave privada.
He leído sobre el protocolo OAuth (aunque no lo entiendo muy bien) que sirve para autenticacion de aplicaciones de terceros y también usa llaves secretas para este proceso.
¿podrías tu o alguien mas ayudarme con esto?
Gracias
Por Dano el 30 de Mayo de 2012
Deivinson Tejeda-blog :
Saludos,
De acuerdo, por eso escribi "es algo cercano a un MVC" <- "algo cercano" y MVC es un link a las faqs de Backbone.js donde aclara eso mismo que comentas.
Saludos
Por Dano el 30 de Mayo de 2012
vlycser :
Dano :
Es un tema interesante sin duda.
Mi caso particular(hablando del ultimo proyecto en el que participe) es un caso complejo y totalmente corporate, tres capas de seguridad:
Te recomiendo este articulo:
http://www.thebuzzmedia.com/designing-a-secure-rest-api-without-oauth-authentication/
Gracias por responder a mi duda. Pero aun sigo sin saber como autenticar las peticiones a la API puesto que mi cliente esta en HTML/JS y no puedo almacenar ningún tipo de llave privada.
He leído sobre el protocolo OAuth (aunque no lo entiendo muy bien) que sirve para autenticacion de aplicaciones de terceros y también usa llaves secretas para este proceso.
¿podrías tu o alguien mas ayudarme con esto?
Gracias
Lo que pasa es que el protocolo oauth una vez que te autentificas guarde "secretamente" unas cookies con un token y ese token es lo que te da la sesion.
Te recomiendo leer tutoriales para usar el oauth de Twitter, es de lo que encontraras mas ejemplos.
Saludos
Por HtrMancera el 30 de Mayo de 2012
Por Dano el 30 de Mayo de 2012
HtrMancera :
Totalmente de acuerdo, nosotros trabajamos en su momento con EJS.
Tienes razon, de hecho era un punto que por ahi queria mencionar brevemente pero se me escapo. Gracias.
Por Deivinson Tejeda el 30 de Mayo de 2012
[1] http://engineering.linkedin.com/frontend/client-side-templating-throwdown-mustache-handlebars-dustjs-and-more
Por Dano el 30 de Mayo de 2012
Deivinson Tejeda-blog :
[1] http://engineering.linkedin.com/frontend/client-side-templating-throwdown-mustache-handlebars-dustjs-and-more
Tsss buen articulo y de hecho ese me llevo a este otro:
http://engineering.linkedin.com/frontend/leaving-jsps-dust-moving-linkedin-dustjs-client-side-templates
Que confirma exactamente lo que decia. "aplicaciones Java arrojando JSPs que escupen html"; el mundo corporate de USA esta invadido de eso.
Me da gusto que LinkedIn dio el paso a ese cambio.
Por antonionavajas el 30 de Mayo de 2012
Por cierto, es curioso que en Cristalab se habla poco o nada de SASS. Debería preparar algo .
Por alexishevia el 30 de Mayo de 2012
Por Dano el 30 de Mayo de 2012
antonionavajas :
Por cierto, es curioso que en Cristalab se habla poco o nada de SASS. Debería preparar algo .
Gracias man! y claro en cristalab se habla de lo que nosotros como usuarios decidimos que se hable. Me parece excelente un articulo de SASS, de hecho yo no he trabajado con SASS.
alexishevia-blog :
Interesante, leere el articulo.
Tambien Twitter es un caso extremadamente complejo, no me imagino la de queries que tendran por segundo.
Por Dano el 30 de Mayo de 2012
Empezare primero con mi perspectiva como usuario de Twitter y la realidad es que su "nueva web" de septiempre del 2010 efectivamente era lenta, rara y menos funcional que el html simple.
A pesar de ser de los pioneros en eso, no fueron los que mejor lo hicieron, sin dejar de recalcar que Twitter es un caso especial, dificilmente trabajaremos en un sitio con la carga del tipo de Twitter.
Habra que aprender que hizo Twitter mal, porque en si es un fallo de su FrontEnd no de la tecnologia en si, porque la prueba de que funciona es TweetDeck donde fue un cliente bien hecho para su misma API. De hecho yo soy user pro de twitter con la web me basta, pero he leido que la mayorita de los twitteros lo ultimo que usan es la web.
Yo estoy mas con la idea tipo linkedin, que esta arquitectura es lo de hoy, el analisis y la forma como lo estan haciendo ellos puede ser una buena escuela, no dejen de revisar los links que se pegaron de linkedin.
En efecto, no deja de ser ironico que uno de los pioneros en esta modalidad, estan aplicando regresion, pero si me lo preguntan a mi mas que regresion, creo que en su FrontEnd no han terminado por dar con el clavo y por eso tienen mas exitos FrontEnd de terceros.
Por Dano el 30 de Mayo de 2012
Por Asn el 31 de Mayo de 2012
Por Dano el 31 de Mayo de 2012
Asn-blog :
Y quien dijo que lo era??????????????
Por spyder el 31 de Mayo de 2012
Por Yaraher el 02 de Junio de 2012
spyder :
Esto se orienta al desarrollo front-end. Esas comprobaciones fácilmente las puedes realizar con un intercambio de tokens y similares que se inyectan en los formularios y los validas del lado del servidor.
Por Kinduff el 04 de Junio de 2012
Por Sayubu el 14 de Junio de 2012
me ha inspirado a leer sobre REST, y tal como lo observan en los primeros comentarios, mi primer tropiezo es la seguridad, ya vi la idea del token, sinembargo veo que la implementación de este método no es del todo segura, ya que si habilito un servicio RESTFul que usa JSON. y uso un token para las invocaciones por AJAX, nada impide que cualquiera que vea el código pueda obtener el TOKEN y usar el servicio a su antojo, aun si todo va por HTTP y no por HTTPS el canal también está expuesto. Por lo que veo la opción es OAUTH pero al parecer tiene una curva de aprendizaje alta.
por favor me corrijen si estoy equivocado y existe una implementación usando token que sea segura y no tenga la vulnerabilidad que comento.
Por Dano el 15 de Junio de 2012
Lo de oauth solo aplica cuando quieres hacer tu API publica, si es privada, por privada me refiero solo esperas que se use en tu sitio, con las sessiones de PHP basta(que guardan una cookie en el front, tal como pasa aun cuando no es REST).
Un servicio REST no es mas que consumir una url en AJAX, si tienes cualquier pagina que ocupe AJAX, es lo mismo.
La sesion se guarda en una cookie y ya. Mientras tu sitio no tenga vulnerabildiades XSS y estes sobre https no veo issues. Si tu sitio tuviera vulnerabilidades, las tendria con o sin REST pues tus vulnerabilidades no serian propiamente de la tecnologia REST, sino de tu server.
PERO, PERO si hablaramos de un sitio donde tu API la consumen terceros, lo de la cookies es totalmente inseguro y ahi solo aplica lo de oauth. Y oauth no es inseguro, pero tampoco impenetrable, creo que todas las apps de Twitter se conectar por oauth y nadie habla asi como que tan facil de hackear una cuenta twitter.
saludos
Por ThonyFD el 28 de Junio de 2012
El tema de la seguridad es y siempre sera algo de discusión con cualquier protocolo que se implemente sea SOAP, CORBA, REST etc, etc, creo que la mejor forma de implementar REST es con el uso de TOKENS como lo hace FACEBOOk lean algo de este API en http://developers.facebook.com/
Por vanvanero el 19 de Julio de 2012
Por Juan Manuel Rivera el 27 de Julio de 2012
Por Gast el 23 de Agosto de 2012
Por Freddie el 24 de Agosto de 2012
Gast :
Por miguel moreno el 28 de Agosto de 2012
Por Nicepawn el 01 de Febrero de 2013
Hace falta más gente como tú en el mundo.
Por Freddie el 04 de Febrero de 2013
Nicepawn-blog :
Hace falta más gente como tú en el mundo.