
Programming JavaScript Applications
Eric Elliott
- Editorial
- O'Reilly
- Año
- 2014
- Páginas
- ~254
- Nivel
- Intermedio
De qué trata
Libro de arquitectura de aplicaciones en el que Eric Elliott explica cómo diseñar aplicaciones JavaScript grandes, de cliente y de servidor, que se puedan ampliar y mantener sin romper lo que ya funciona. Se publicó en 2014, en plena era de ECMAScript 5 y con ES6 todavía en camino, así que mezcla las prácticas de ES5 con un primer vistazo a los módulos de ES6. Está dirigido a desarrolladores con experiencia en JavaScript que ya escriben código con soltura y quieren dar el salto a pensar en arquitectura, modularidad y reutilización.
El recorrido empieza por los fundamentos que Elliott considera clave. Primero, las funciones: closures, hoisting, IIFE, Function.prototype.bind, parámetros con nombre, polimorfismo, APIs fluidas, funciones puras, aplicación parcial, currying, callbacks y promesas/deferreds. Después, los objetos, con una postura muy marcada: considera obsoleta la herencia clásica y defiende los prototipos, las fábricas y los «stamps» de su librería Stampit. Siguen los módulos, con el patrón módulo, AMD, módulos al estilo de Node, npm y ES6, además de un ejemplo de empaquetado del cliente con CommonJS, Grunt y Browserify. En la separación de responsabilidades trata los emisores y agregadores de eventos, MV*, las plantillas y los Web Components en el cliente, y en el servidor una introducción a Node.js y Express (rutas, middleware y la filosofía de «dejar que falle»). La segunda mitad cubre temas que pocos libros de JavaScript abordan. En control de acceso explica el hash de contraseñas con sal, los ataques por fuerza bruta y por tiempo, la autenticación multifactor y federada (Mozilla Persona, WebID) y OAuth 2.0. Le siguen el logging orientado a operaciones, seguridad y analítica, las APIs RESTful autodescriptivas con hipermedia (HATEOAS, Jade y su propuesta Jiron), los feature toggles y la internacionalización. El apéndice es una guía de estilo con una introducción a QUnit.
No es un libro de proyectos: los capítulos se apoyan en fragmentos de código y en una pequeña aplicación de ejemplo para ilustrar el empaquetado de módulos. Su valor está en la visión de conjunto, ya que presenta el desarrollo full-stack con JavaScript como un problema de arquitectura y operación, no solo de sintaxis. Conviene leerlo sabiendo que varias herramientas que cita (Grunt, Jade, Mozilla Persona) quedaron obsoletas y que algunas opiniones del autor, como evitar los constructores, son discutibles. Los capítulos de internacionalización y feature toggles son breves. Aun así, sus ideas sobre composición de objetos, modularidad, seguridad y diseño de APIs siguen siendo útiles.
- ES5 / ES6
- Funciones y closures
- Programación funcional
- Prototipos y fábricas
- Stampit
- Módulos (AMD, CommonJS, ES6)
- Browserify y Grunt
- Node.js y Express
- Autenticación y OAuth 2.0
- Logging
- APIs RESTful e hipermedia
- Feature toggles
¿Cómo enseña?
Teoría + práctica
- ✗ Sin ejercicios
- ✗ Sin proyectos

