Hoy he terminado mi proyecto atpl.js.

atpl.js (Advanced TemPLates) tenía como intención implementar completamente el proyecto de sistema de templates Twig, pero en vez de para PHP, para Node.JS.
Tengo constancia de un par de proyectos que pretendían/pretenden hacer eso mismo: swig y twig.js.

Historia:
El proyecto lo empecé hará cosa de un año, pero decidí dejar algo de tiempo a los proyectos swig y twig.js para ver si maduraban e implementaban twig de una forma correcta. Para mediados de diciembre de 2012, con TypeScript recién salido del horno, y viendo que swig y twig.js no habían madurado lo suficiente, decidí retomarlo en TypeScript. Y tras haber trabajando en el proyecto de forma intermitente desde entonces hasta día de hoy, he implementado todas las funcionalidades de Twig de las que tengo constancia.

Rendimiento:
atpl.js es rápido, muy rápido. Hace uso de generación dinámica de código javascript, de forma que el código de los templates acaba convirtiéndose en código nativo con el motor V8 que usa node. Así que el rendimiento es excelente y prácticamente imperceptible con respecto a no usar un sistema de templates.
Además de eso, los ámbitos de nombres tanto de bloques como de variables lo he implementado mediante el prototipado de javascript, de esta forma el acceso a variables y bloques es extremadamente rápido.

Implementación:
atpl.js implementa toda la base de twig, desde la herencia múltiple y condicional de varios niveles, hasta la interpolación de variables en cadenas, pasando por todos los operadores, macros, reutilización horizontal de bloques, todos los filtros, functions, tests y tags.

Desarrollo:
atpl.js está desarrollado completamente mediante TDD (Test Driven Developement), usando travis-ci para hacer una integración contínua. Todas las características soportadas por atpl.js tienen su test unitario que comprueba su correcto funcionamiento y cada test se ejecuta mediante travis en cada commit y cada release.

Integración:
atpl.js funciona con express2 y express3 y soporta consolidate, además de poder usarse de forma autónoma.

Estado:
Actualmente estoy usando atpl.js en varios proyectos online y proyectos en curso sin problemas de estabilidad. Actualmente la versión online es la 0.7.1 que pasará a la 1.0.0 cuando termine de documentar y limpiar código y corregir los posibles bugs menores que reportase la gente.

Opiniones de la gente:
[1] “just a remarkable job… thanks! Finally now I can say that NodeJS have a great templating engine! I’m gonna update my article on my blog! Thanks!”

Modo de uso:
Para usar atpl.js únicamente tienes que instalar el módulo en tu proyecto mediante npm como con cualquier otro módulo:
npm install atpl

Página del proyecto: https://github.com/soywiz/atpl.js