Motor de ramita de primera clase para node.js
Creemos que un motor de ramas de primera clase debería poder representar cualquier plantilla al mismo resultado que el motor PHP oficial. Eso significa que debe implementar el 100% de la sintaxis definida por las especificaciones del lenguaje y que debe renderizar esa sintaxis utilizando la lógica de PHP.
También creemos que un motor de ramita de primera clase debería poder ponerse al día fácilmente cuando evolucionan las especificaciones de la ramita. Su arquitectura y filosofía de código deberían estar lo más cerca posible como la implementación de PHP.
Finalmente, creemos que un motor de ramas de primera clase debería permitir a los usuarios aprovechar su experiencia con TwigPhP y obtener el apoyo de la gran comunidad que viene con él.
Eso es lo que es Twing. Un motor de mantenimiento primero que pasa el 100% de las pruebas de integración TWIGPHP es lo más cercana posible a su estructura de código y expone una API como cierre de posesión.
El twing necesita al menos nodo.js 8.0.0 para ejecutarse.
La forma recomendada de instalar twing es a través de NPM:
npm install twing --save
const {twingenvironment, twingloaderArray} = require ('twing'); let loader = new TwingLoLOGETERArray ({'index.twig': 'Hola {{name}}!'}); Let twing = new twingenvironment (loader); twing. render ('index.twig', {name: 'Fabien'}). Entonces ((output) => {// haz algo con la salida});
Twing y Express funcionan bastante bien juntos. Eche un vistazo a la documentación para un ejemplo de uso con Express.
Comenzando con la versión 2.0.0, Twing se puede usar en navegadores web con muy pocos compromisos. Los componentes del sistema de archivos obviamente no están disponibles (es decir, el cargador del sistema de archivos y la caché) pero todo lo demás es totalmente compatible.
Los agrupadores del módulo agarrarán automáticamente el sabor de twing específico del navegador cuando se importe el módulo de twing. Ya sea const {TwingEnvironment} = require('twing');
o import {TwingEnvironment} from 'twing';
Funcionará tanto en Node.js como en el navegador, una vez agrupado en el último caso.
Use JSDelivr CDN para incluir twing en su documento HTML:
<script src="https://cdn.jsdelivr.net/npm/twing/dist/lib.min.js"></script>
Una vez cargado por el navegador, Twing está disponible bajo la variable Twing
global.
Twing tiene como objetivo implementar las especificaciones de ramita perfectamente, sin compromiso. Esta no es una tarea fácil debido a la naturaleza de las especificaciones de la ramita: no existen oficialmente y solo pueden deducirse de la documentación pública, la documentación del código fuente y el conjunto de pruebas de la implementación de referencia de PHP. A veces sucede que algo que no era parte de las documentos ni de la suite de prueba de repente se convierte en parte de las especificaciones como la etiqueta filter
o los problemas de reelaboración de macros, poniendo twing y todas las demás implementaciones de no referencia en la posición incómoda de tener que tratar con un posible cambio de ruptura. Dado que el equipo de Twig no planea lanzar algunas especificaciones oficiales para el idioma, no podemos esperar que el problema se resuelva pronto.
La estrategia de Twing aquí es mantener estrictamente las reglas de versiones semánticas y nunca introducir un cambio de ruptura en una versión menor: su extensa suite de prueba con 100% de cobertura de código garantiza eso. Los errores de Twig Teams se administrarán emitiendo un problema conocido, si el error es trivial o se topa con una nueva versión principal, si no es así.
Aquí está la tabla de compatibilidad entre las versiones menores de los niveles de especificaciones de twing y ramita, junto con un resumen de características notables proporcionadas por cada nivel de especificaciones de ramita. Tenga en cuenta que las versiones menores de Twig no siempre proporcionan nuevas características relacionadas con el idioma (debido al equipo de Twig, perpetúa la confusión entre Twig y su implementación de referencia, TWIGPHP).
Versión de twing | Nivel de especificaciones de ramita | Características notables |
---|---|---|
3.0 | 2.11 | Alcance de macros |
2.3 | 2.10 | spaceless , column , filter , map y reduce filtros, apply la etiqueta, el modificador de control de espacios line whitespace trimming |
2.2 | 2.6 | Etiqueta deprecated |
1.3 | 2.5 | Deprecaciones spaceless y block |
1.0 | 2.4 |
Se recomienda altamente usar siempre la última versión de Twing disponible, ya que las correcciones de errores siempre se dirigirán a la última versión.
Puede encontrar la lista de temas conocidos de twing con respecto a la implementación de especificaciones de ramas aquí. Tenga en cuenta que se garantiza que los problemas conocidos se abordarán en el próximo aumento de la versión principal de twing.
Lea la documentación para obtener más información.
Gulp-twing: compile plantillas de ramita con trago. Construir sobre twing.
Twing-cargador: Webpack Carger que compila plantillas de twig usando twing.
Bifurca este repositorio
Código
Implementar pruebas utilizando cinta
Emitir una solicitud de extracción teniendo en cuenta que todas las solicitudes de extracción deben hacer referencia a un problema en la cola de problemas
Copyright © 2018 Eric Morand. Liberado bajo la licencia BSD de 2 cláusulas.