Maison > Article > interface Web > Explication détaillée du moteur de modèles Node.js Jade
Cet article présente principalement une introduction détaillée au moteur de modèles Node.js. Jade est un moteur de modèles pour Node.js. L'éditeur le trouve plutôt bon. Maintenant, je vais le partager avec vous et le donner comme référence. . Suivons l'éditeur et jetons un œil. J'espère que cela pourra aider tout le monde.
Jade est un moteur de modèles pour Node.js. Il s'appuie sur de nombreux aspects de Haml, sa syntaxe est donc relativement similaire à Haml. De plus, Jade prend également en charge les espaces.
1. Balises
Dans Jade, tout texte en début de ligne est interprété par défaut comme une balise HTML. Et il vous suffit d'écrire la balise-note d'ouverture : pas besoin d'ajouter "a8093152e673feb7aba1828c43532094". Parce que Jade rendra les balises de fermeture et d'ouverture pour nous. Par exemple :
body p h1 Jade是Node.js的一个模板引擎 p 它借鉴了Haml的很多地方,所以语法上和Haml比较相近。 p footer © Pandora
Le code HTML final rendu par le modèle Jade ci-dessus est :
<body> <p> <h1> Jade是Node.js的一个模板引擎</h1> <p>它借鉴了Haml的很多地方,所以语法上和Haml比较相近。</p> </p> <p> <footer>© Pandora</footer> </p> </body>
Remarque : Si aucun nom de balise n'est écrit, la valeur par défaut est la balise p.
2. Variables/données
Les données transmises au modèle Jade sont appelées locales. Utilisez le signe égal "=" pour afficher la valeur d'une variable.
(locaux) :
{ title: "Express.js Guide", body: "The Comprehensive Book on Express.js" }
Code Jade :
h1= title p= body
rendu Sortie HTML :
<h1>Express.js Guide</h1> <p>The Comprehensive Book on Express.js</p>
3. Lecture des variables
La valeur de la variable dans Jade est lue via #{ name } à réaliser. Par exemple :
- var title = "Node" p I love #{title}
La valeur de la variable est traitée lors de la compilation du modèle, ne l'utilisez donc pas dans l'exécutable JavaScript (-).
4. Attributs
Les attributs suivent l'étiquette et sont entourés par "()", et plusieurs attributs sont séparés par ",". Par exemple : corps (nom1 = « valeur1 », nom2 = « valeur2 »).
p(id="content", class='main') a(href='http://csdn.net', title='csdn主页', target='_blank') CSDN:中国软件联盟 form(action="/login") button(type="submit", value="提交")
Sortie :
<p id="content" class='main'> <a href='http://csdn.net' title='csdn主页' target='_blank'> CSDN:中国软件联盟</a> <form action="/login"> <button type="submit" value="提交"> </form> </p>
Propriétés dynamiques :
Les attributs dynamiques signifient que la valeur de l'attribut est dynamique, c'est-à-dire qu'une variable est utilisée pour représenter la valeur de l'attribut. Le symbole "|" peut écrire le contenu du nœud HTML sur une nouvelle ligne. Par exemple :
a(href=url, data-active=isActive) label input(type="checkbox", checked=isChecked) | yes / no
Données fournies au modèle ci-dessus :
{ url: "/logout", isActive: true, isChecked: false }
Sortie après rendu final HTML :
<a href="" data-active=" rel="external nofollow" data-active"></a> <label> <input type="checkbox" />yes / no </label>
Remarque : les attributs avec une valeur false seront ignorés lors de la sortie du code HTML ; lorsqu'aucune valeur d'attribut n'est transmise, la valeur par défaut est true.
5. Littéral
Pour éviter les ennuis, vous pouvez écrire le nom de la classe et le nom de l'ID directement après le nom de la balise. Par exemple :
p#content p.lead.center | Pandora_galen #side-bar.pull-right // 没有标签名,默认为“p” span.contact.span4 a(href="/contact" rel="external nofollow" rel="external nofollow" ) contact me
HTML de sortie rendu :
<p id="content"> <p class="lead center"> Pandora_galen <p id="side-bar" class="pull-right"></p> <span class="contact span4"> <a href="/contact" rel="external nofollow" rel="external nofollow" > contact me </a> </span> </p>
6. 🎜>
Utilisez le symbole "|" pour afficher le texte original.p | 我两年前开始学习前端 | 在此之间,我学过了html, jQuery, JavaScript, Python, Css3, HTML5, Bootstrap, D3.js, SVG...而现在我在学Node。并且我已经深深的爱上了前端。
7. Blocs de script et de style
Utilisez le symbole "." HTML >
Code généré :
script. console.log("Hello world!"); setTiemout(function() { window.location.href = "http://csdn.net" }, 1000); console.log("Good bye!");
De même, le style génère c9ccee2e6ea535a969eb3f532ad9fe89e90442d4aba9b6409c93259f982d1eec.
<script> console.log("Hello world!"); setTiemout(function() { window.location.href = "http://csdn.net" }, 1000); console.log("Good bye!"); </script>
8. Code JavaScript
Utilisez -, = ou ! =Ces trois symboles sont utilisés pour écrire du code JS exécutable dans Jade qui peut manipuler la sortie. Ceci est utile lors de la sortie d’éléments HTML et de l’injection de JavaScript. Cependant, vous devez faire attention à éviter les attaques de scripts intersites (XSS) lors de cette opération.
Par exemple, vous pouvez l'utiliser ! =Définir un tableau, afficher les données de l'étiquette :
Le code généré est le suivant :
- var arr = ['<a>', '<b>', '<c>'] ul -for (var i = 0; i < arr.length; i++) li span= i span!= "unescaped:" + arr[i] + "vs." span= "escaped:" + arr[i]
L'une des principales différences entre les moteurs de modèles Jade et Guidon est que Jade permet d'écrire presque tout le JavaScript dans le code ; cependant, Guidon limite les développeurs à un petit nombre d'assistants intégrés et personnalisés.
<ul> <li><span>0</span><span>unescaped: <a>vs. </span><span>escaped: <a></span></li> <li><span>1</span><span>unescaped: <b>vs. </span><span>escaped: <b></span></li> <li><span>2</span><span>unescaped: <c>vs. </span><span>escaped: <c></span></li> </ul>
9. Commentaires
Jade a deux types de commentaires :
f35d6e602fd7d0f0edfa6f7d103c1b57. —“//”
2cc198a1d5eb0d3eb508d858c9f5cbdb. Pas de sortie vers la page—— “//-”
Sortie :
// 普通注释,会输出到渲染后生成的HTML页面 p Hello Jade content //- 特殊注释,不会输出到HTML页面 p (id="footer") copyright 2016
<!-- 普通注释,会输出到渲染后生成的HTML页面 --> <p> Hello Jade content </p> <p id="footer">copyright 2016</p>
Ajoutez un préfixe - à l'instruction if, afin que vous puissiez écrire du code JavaScript standard ou vous ne le faites pas ; Ce n'est pas nécessaire. Préfixe, pas de parenthèses, bien sûr, cette dernière est plus concise.
En plus, il y a moins, ce qui équivaut à pas ou ! .
- var user = {} - user.admin = Math.random() > 0.5 if user.admin button(class = "launch") Launch Spacecraft else button(class = "login") Log inRemarque : Il n'y a pas de point-virgule ";" à la fin de chaque ligne de code
11 Chaque instruction
Itération dans. Jade C'est très simple, il suffit d'utiliser chaque instruction.
Sortie :
- var language = ['JavaScript', 'Node', 'Python', 'Java'] p each value, index in language p= index + "," + value
Exemple 2 :
<p> <p>0. JavaScript</p> <p>1. Node</p> <p>2. Python</p> <p>3. Java</p> </p>
Sortie :
- var language = ['JavaScript': -1, 'Node': 2, 'Python': 3, 'Java': 1] p each value, key in languages p= key + ":" + value
<p> <p>JavaScript: -1</p> <p>Node: 2</p> <p>Python: 3</p> <p>Java: 1</p> </p>
La fonction du filtre est : Écrivez un bloc de texte dans une autre langue ;
Remarque : Pour utiliser le filtre Markdown, vous devez installer le module Markdown, ainsi que le NPM Marked et Markdown. forfaits.
p :markdown # practical Node.js [This book](http://csdn.net) really helps to grasp many coponents needed for modern-day web development.
13. Cas
- var coins = Math.round(Math.random() * 10) case coins when 0 p You have no money when 1 p You have a coin default p You have #{coins} coins!
声明的语法: mixin name(param, param2, …….)
调用: +name(data)
mixin row(items) tr each item, index in items td= item mixin table(tableData) table each row, index in tableData +row(row) - var node = [{name: "express"}, {name: "Jade"}, {name: "Handlebars"}] +table(node) - var js = [{name: 'backbone'}, {name: 'angular'}, {name: "emberJS"}] +table(js)
输出:
<table> <tr> <td>express</td> </tr> <tr> <td>Jade</td> </tr> <tr> <td>Handlebars</td> </tr> </table> <table> <tr> <td>backbone</td> </tr> <tr> <td>angular</td> </tr> <tr> <td>emberJS</td> </tr> </table>
15、include
include与引入JS和CSS外部文件很相似。它是自顶向下的方法: 在include其它文件的主文件里,我们决定要用什么。主文件会被首先处理(可以在主文件了定义数据locals),然后才会再接着处理主文件里所包含进来的子文件(子文件里可以使用主文件中定义的数据locals);
包含一个Jade模板,用include /path/filename.
例如,在文件A里:
include ./includes/header
注意: 这里不用给模板名以及路径添加双引号或者单引号。
再例如,从父目录开始查找:
include ../includes/footer
注意:不能再文件名和文件路径中使用变量,因为includes/partials是在编译时处理的,而不是在执行时。
对于使用Sass、Compass又或者Less的人这些事再熟悉不过的了。
16、extend
extend与include“唱对台戏”,正好相反,extend是一种自底向上的方法。它所包含的文件决定它要替换主文件中哪那一部分。
使用格式: extend filename 和 block blockname;
示例-1: 在文件file_a里:
block header p some default text block content p loading... block footer p copyright
示例-2: 在文件file_b里:
extend file_a block header p very specific text block content .main-content
相关推荐:
node+express+jade制作简单网站指南_node.js
Ce 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!