Les modèles
utilisés auparavant incluent ejs et jade (renommé plus tard pug). Le premier est conçu pour être facile à utiliser et sa syntaxe est relativement proche du HTML. Ce dernier est intimidant, et si je me souviens bien, jade a des exigences strictes en matière d'indentation, car il juge la relation hiérarchique des balises en fonction de l'indentation. Cette conception rend presque impossible l'écriture de Python, c'était comme marcher. sur de la glace fine (où est mon pied à coulisse ???), donc j'utilisais encore ejs pour le développement à cette époque.
Donc, cette fois, j'ai suivi à peu près les spécifications de syntaxe de ejs pour implémenter Leopard.
Voici l'adresse github. Vous êtes invités à proposer des suggestions et des bugs dans le numéro après l'avoir lu. sont également les bienvenus.
Vous pouvez également télécharger Leopard via npm :
<span style="font-size: 14px;">$ npm install leopard-template<br></span>
Actuellement, Leopard implémente les points de fonction suivants :
Interpolation : y compris l'interpolation de texte et l'interpolation HTML
Jugement logique : <code><span style="font-size: 14px;">if</span>
si et <span style="font-size: 14px;">else</span>
<span style="font-size: 14px;">for</span>
Boucle : for
<span style="font-size: 14px;">capitalize</span>
Filtre : prend en charge l'ajout de filtres à l'interpolation et les filtres peuvent être utilisés en série. Le moteur dispose de deux filtres intégrés, <code><span style="font-size: 14px;">reverse</span>
capitalize et reverse<code><span style="font-size: 14px;">Leopard.filter(filter, handler)</span>
. Leopard prend également en charge les filtres personnalisés. Vous pouvez utiliser Leopard.filter(filter, handler) pour enregistrer un filtre globalement. En termes de filtres, Leopard
<span style="font-size: 14px;">var Leopard = require('leopard-template')<br>var leo = new Leopard()<br><br>var template = '<% if (isOk) { %>' +<br> '<span class=\"nickname\"><%= nickname | capitalize %></span>' +<br> '<% } else { %>' +<br> '<span class=\"realname\"><%= realname | capitalize %></span>' +<br> '<% } %>'<br><br>var html = leo.compile(conditions, {<br> isOk: false,<br> nickname: 'leo',<br> realname: 'leopard'<br>})<br><br>// html就是最终编译成功的的html了,可以直接通过document的方法渲染到页面上<br></span>
Performance
<span style="font-size: 14px;">li</span>
En fait, tout le monde connaît les performances du moteur de modèle de chaîne. Dans les conditions matérielles actuelles, on peut presque dire qu'il est très rapide. (L'enfant qui a souffert des mauvaises performances de rendu du serveur DOM virtuel a pleuré et s'est évanoui dans les toilettes. Mon projet d'entreprise est bloqué ici et ne peut pas être en ligne) J'ai fait un simple benchmark , la boucle de 50 000 <em>li</em>
prend environ 60 ms. Bien sûr,
<span style="font-size: 14px;"># benchmark<br>$ npm run benchmark<br></span>
Open sourceBien qu'il s'agisse d'un projet de fabrication de roues, il ressemble presque à
ejs<span style="font-size: 14px;"># unit test<br>$ npm run test<br><br># coverage<br>$ npm run coverage<br></span>
Leopard
conformément au cahier des charges de projets open source. J'ai écrit des cas de test avec une couverture à 100% pourExplication de l'exemple de jade du moteur de modèle Node.js
php implémente la fonction de moteur de modèle Exemple simpleCadre de déploiement de conteneurs de modèles de conception PHP basé sur un moteur de modèlesCe qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!