Moteur brindille de première classe pour Node.js
Nous pensons qu'un moteur de brindilles de première classe devrait être en mesure de rendre n'importe quel modèle au même résultat que le moteur PHP officiel. Cela signifie qu'il doit implémenter 100% de la syntaxe définie par les spécifications du langage et qu'elle devrait rendre cette syntaxe à l'aide de la logique PHP.
Nous pensons également qu'un moteur de brindilles de première classe devrait être capable de rattraper facilement lorsque les spécifications des brindilles évoluent. Son architecture de code et son philosophie devraient alors être aussi proches que possible que la mise en œuvre de PHP.
Enfin, nous pensons qu'un moteur brindille de première classe devrait permettre aux utilisateurs de s'appuyer sur leur expérience avec Twigphp et d'obtenir le soutien de l'énorme communauté qui l'accompagne.
C'est ce qu'est le twing. Un moteur de maintenabilité axé sur les tests d'intégration TwigPHP est aussi proche que possible de sa structure de code et exposent une API tel que possible.
Twing a besoin au moins de Node.js 8.0.0 pour s'exécuter.
La façon recommandée d'installer Twing est via NPM:
npm install twing --save
const {twingenvironment, twingloaderArray} = require ('twing'); let loder = new twingLoaderArray ({'index.twig': 'bonjour {{name}}!'}); let twing = new twingenvironment (Loderer); twing. Render ('index.twig', {name: 'Fabien'}). puis ((sortie) => {// faire quelque chose avec la sortie});
Twing et Express travaillent assez bien ensemble. Jetez un œil à la documentation pour un exemple d'utilisation avec Express.
À partir de la version 2.0.0, le twing peut être utilisé dans les navigateurs Web avec très peu de compromis. Les composants du système de fichiers ne sont évidemment pas disponibles (à savoir le chargeur et le cache du système de fichiers) mais tout le reste est entièrement pris en charge.
Les bundlers de modules saisiront automatiquement la saveur spécifique au navigateur du twing lorsque le module de twing est importé. Soit const {TwingEnvironment} = require('twing');
ou import {TwingEnvironment} from 'twing';
fonctionnera dans Node.js et le navigateur - une fois regroupé dans ce dernier cas.
Utilisez JSDelivr CDN pour inclure le twing dans votre document HTML:
<script src="https://cdn.jsdelivr.net/npm/twing/dist/lib.min.js"></script>
Une fois chargé par le navigateur, le twing est disponible sous la variable Twing
globale.
Twing vise à mettre en œuvre parfaitement les spécifications des brindilles, sans compromis. Ce n'est pas une tâche facile en raison de la nature des spécifications de brindilles: elles n'existent pas officiellement et ne peuvent être déduites que de la documentation publique, de la documentation du code source et de la suite de tests de l'implémentation de référence PHP. Il arrive parfois que quelque chose qui ne faisait pas partie des documentations ou de la suite de tests fait soudainement partie des spécifications telles que la balise filter
ou les problèmes de repensage des macros, mettant le twing et toutes les autres implémentations non références dans la position inconfortable de devoir traiter avec un changement potentiel de rupture. Étant donné que l'équipe de Twig ne prévoit pas de publier des spécifications officielles pour la langue, nous ne pouvons pas nous attendre à ce que le problème soit résolu de sitôt.
La stratégie de Twing est ici de s'en tenir strictement aux règles de version sémantique et de ne jamais introduire un changement de rupture en une version mineure - sa vaste suite de test avec une couverture de code à 100% le garantit. Les erreurs de Twig Teams seront gérées en émettant un problème connu, si l'erreur est triviale, soit en se heurtant à une nouvelle version majeure, si ce n'est pas le cas.
Voici le tableau de compatibilité entre les versions mineures des niveaux de twing et de spécifications de brindilles, ainsi qu'un résumé des caractéristiques notables fournies par chaque niveau de spécifications de brindilles. Notez que les versions mineures Twig ne fournissent pas toujours de nouvelles fonctionnalités liées au langage (en raison de l'équipe de Twig perpétuant la confusion entre Twig et leur implémentation de référence, Twigphp).
Version twing | Niveau de spécifications de brindilles | Caractéristiques notables |
---|---|---|
3.0 | 2.11 | Macros cadavre |
2.3 | 2.10 | spaceless , column , filter , map et reduce les filtres, apply la balise, le modificateur de contrôle des espaces line whitespace trimming |
2.2 | 2.6 | étiquette deprecated |
1.3 | 2.5 | dépréciations spaceless et liées à block |
1.0 | 2.4 |
Il est fortement recommandé d'utiliser toujours la dernière version de Twing disponible car les corrections de bogues cibleront toujours la dernière version.
Vous pouvez trouver la liste des questions connues de Twing concernant la mise en œuvre des spécifications de brindilles ici. Notez que les problèmes connus sont garantis pour être résolus dans la prochaine version principale de Twing.
Lisez la documentation pour plus d'informations.
Gulp-twing: compiler des modèles de brindilles avec Gulp. Construire sur Twing.
Twing-chargedeur: webpack chargeur qui compile des modèles de brindilles à l'aide de twing.
Fourchez ce référentiel
Code
Implémenter des tests à l'aide de la bande
Émission d'une demande de traction en gardant à l'esprit que toutes les demandes de traction doivent faire référence à un problème dans la file d'attente du problème
Copyright © 2018 Eric Morand. Libéré dans le cadre de la licence BSD de 2 clause.