Vamos a empezar explicando qué es Kraken y qué no es:
- No es un pulpo gigante.
- No es un framework para Node.js.
- Es una capa que proporciona seguridad y convención a Express.
- También proporciona funcionalidades interesantes como un motor de plantillas o i18n.
Creada por PayPal y liberada bajo Apache License v2.0, esta suite viene a rellenar un hueco existente en Express.

El principal problema de Express es que no hay convención ni estructura, de entrada tendrás toda la aplicación en un solo fichero: app.js
. Además será insegura y no dispondrá de elementos básicos que prácticamente hoy en día todas las aplicaciones web podrían necesitar.
KrakenJS intentará solventar eso proporcionando una estructura MVC que, junto con una serie de módulos, forman la suite Kraken.
Módulos de la suite
KrakenJS
KrakenJS (GitHub) es el núcleo de la suite. Su misión es, como ya hemos dicho, proporcionar estructura y convención. La estructura que utiliza es la siguiente:
Ruta | Descripción |
---|---|
/config |
Configuración de la aplicación y del middleware. |
/controllers |
Enrutamiento y lógica de aplicación. |
/locales |
Recursos específicos del idioma. |
/models |
Modelos. |
/public |
Recursos web que están disponibles públicamente. |
/public/templates |
Plantillas de servidor y cliente. |
/tests |
Pruebas unitarias y funcionales. |
index.js |
Punto de entrada a la aplicación. |
Para nuestro gusto, estaría genial si el enrutamiento estuviera apartado de la lógica de control y que además, los templates del lado del servidor no fueran accesibles públicamente.
También proporciona un generador tipo Yeoman, de tal manera que mediante un simple comando podemos generar una aplicación, controladores o modelos, entre otras cosas.
Por último, KrakenJS nos facilita mediante el punto de entrada a la aplicación, una serie de filtros como por ejemplo: requestStart
, requestBeforeRoute
y requestAfterRoute
, que nos permitirán añadir funcionalidad en el momento oportuno.
Lusca
Lusca es el módulo de seguridad de la suite Kraken. Funciona como middleware y protegerá nuestra aplicación casi sin esfuerzo por nuestra parte de una serie de amenazas como CSRF, CSP o XSS.
const app =
app
Adaro
Adaro se encarga de renderizar las vistas utilizando el motor de plantillas Dust.
Cabe mencionar que Dust.js es un gran motor de plantillas, abandonado hace 2 años y ahora mantenido por LinkedIn a través de un fork. Lejos de parecerse a Jade, proporciona plantillas asíncronas, compatibilidad con el navegador, rapidez y una sintaxis limpia y clara.
const app =
app
Kappa
No hablaremos aquí de Kappa porque es un proxy para npm que no tiene mucho que ver con la capa de Express.
Makara
Makara es el módulo de internacionalización y localización. Se encarga de proporcionar al motor de plantillas Dust, los paquetes de idiomas disponibles en /locales
.
Simplemente añadimos este contexto antes de generar la vista:
reslocalscontext = locality: 'es_ES'
const data = name: 'David Bustamante'
res
En nuestra plantilla introducimos por ejemplo:
{@pre type="content" key="index.greeting"/}
Y después, en nuestros ficheros de idiomas correspondientes:
index.greeting=Hello {name}!
index.greeting=Hola {name}!
Cuando nuestro querido amigo David entre podrá ver Hola David Bustamante!
.
También se puede especificar un idioma por defecto que cargará en caso de que el idioma que solicitamos no exista o esté traducido a medias.
Resumen
Como reza el eslogan del proyecto, el pulpo Paul Kraken proporcionará a Express unos cuantos brazos para ayudar en su tarea.
Seguridad, internacionalización, estructura MVC y un potente motor de plantillas (entre otras cosas), hacen de Kraken una gran opción a la hora de comenzar a crear nuestra nueva app, desde un punto de partida más adelantado del que Express nos concede.
Por cierto, todos los módulos pueden utilizarse por separado sin necesidad de utilizar la suite completa, ya que dependen únicamente de Express.