Heim >Web-Frontend >js-Tutorial >Ausführliche Erläuterung der Node.js-Vorlagen-Engine Jade
Dieser Artikel stellt hauptsächlich die detaillierte Einführung in die Node.js-Vorlagen-Engine vor. Jade ist eine Vorlagen-Engine für Node.js. Jetzt werde ich sie mit Ihnen teilen und als Referenz verwenden . Folgen wir dem Herausgeber und schauen wir uns das an. Ich hoffe, es kann allen helfen.
Jade ist eine Template-Engine für Node.js. Sie basiert auf vielen Aspekten von Haml, daher ist ihre Syntax relativ ähnlich zu Haml. Darüber hinaus unterstützt Jade auch Leerzeichen.
1. Tags
In Jade wird jeder Text am Anfang einer Zeile standardmäßig als HTML-Tag interpretiert. Und Sie müssen nur den ersten Tag-Hinweis schreiben: „a8093152e673feb7aba1828c43532094“ muss nicht hinzugefügt werden. Weil Jade die schließenden und öffnenden Tags für uns rendern wird. Zum Beispiel:
body p h1 Jade是Node.js的一个模板引擎 p 它借鉴了Haml的很多地方,所以语法上和Haml比较相近。 p footer © Pandora
Der endgültige HTML-Code, der von der obigen Jade-Vorlage gerendert wird, lautet:
<body> <p> <h1> Jade是Node.js的一个模板引擎</h1> <p>它借鉴了Haml的很多地方,所以语法上和Haml比较相近。</p> </p> <p> <footer>© Pandora</footer> </p> </body>
Hinweis: Wenn kein Tag-Name geschrieben wird, ist der Standardwert das p-Tag.
2. Variablen/Daten
Die an die Jade-Vorlage übergebenen Daten werden als lokale Daten bezeichnet. Verwenden Sie das Gleichheitszeichen „=“, um den Wert einer Variablen auszugeben.
(Einheimische):
{ title: "Express.js Guide", body: "The Comprehensive Book on Express.js" }
Jade-Code:
h1= title p= body
Rendering Ausgabe-HTML:
<h1>Express.js Guide</h1> <p>The Comprehensive Book on Express.js</p>
3. Variablen lesen
Der Wert der Variablen in Jade wird über #{ name gelesen } zu erreichen. Zum Beispiel:
- var title = "Node" p I love #{title}
Der Wert der Variablen wird beim Kompilieren der Vorlage verarbeitet. Verwenden Sie ihn daher nicht in ausführbarem JavaScript (-).
4. Attribute
Attribute folgen der Beschriftung und werden durch „()“ umschlossen, mehrere Attribute werden durch "," getrennt. Beispiel: Körper (Name1 = „Wert1“, Name2 = „Wert2“).
p(id="content", class='main') a(href='http://csdn.net', title='csdn主页', target='_blank') CSDN:中国软件联盟 form(action="/login") button(type="submit", value="提交")
Ausgabe:
<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>
Dynamische Eigenschaften:
Dynamische Attribute bedeuten, dass der Wert des Attributs dynamisch ist, d. h. eine Variable wird verwendet, um den Wert des Attributs darzustellen. Das Symbol „|“ kann HTML-Knoteninhalte in eine neue Zeile schreiben. Beispiel:
a(href=url, data-active=isActive) label input(type="checkbox", checked=isChecked) | yes / no
Für die obige Vorlage bereitgestellte Daten:
{ url: "/logout", isActive: true, isChecked: false }
Ausgabe nach dem endgültigen Rendering HTML:
<a href="" data-active=" rel="external nofollow" data-active"></a> <label> <input type="checkbox" />yes / no </label>
Hinweis: Attribute mit dem Wert „false“ werden bei der Ausgabe von HTML-Code ignoriert; wenn kein Attributwert übergeben wird, wird standardmäßig „true“ verwendet.
5. Literal
Um Ärger zu vermeiden, können Sie den Klassennamen und den ID-Namen direkt nach dem Tag-Namen schreiben. Beispiel:
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
gerendertes Ausgabe-HTML:
<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>
Text
Verwenden Sie das „|“-Symbol, um den Originaltext auszugeben.
p | 我两年前开始学习前端 | 在此之间,我学过了html, jQuery, JavaScript, Python, Css3, HTML5, Bootstrap, D3.js, SVG...而现在我在学Node。并且我已经深深的爱上了前端。
7. Skript- und Stilblöcke
Verwenden Sie das „.“-Symbol, um
script. console.log("Hello world!"); setTiemout(function() { window.location.href = "http://csdn.net" }, 1000); console.log("Good bye!");Generierter Code:
<script> console.log("Hello world!"); setTiemout(function() { window.location.href = "http://csdn.net" }, 1000); console.log("Good bye!"); </script>In ähnlicher Weise generiert style c9ccee2e6ea535a969eb3f532ad9fe89e90442d4aba9b6409c93259f982d1eec.
8. JavaScript-Code
Verwenden Sie -, = oder! =Diese drei Symbole werden verwendet, um ausführbaren JS-Code in Jade zu schreiben, der die Ausgabe manipulieren kann. Dies ist nützlich, wenn Sie HTML-Elemente ausgeben und JavaScript einfügen. Allerdings müssen Sie dabei vorsichtig sein, um Cross-Site-Scripting-Angriffe (XSS) zu vermeiden. Sie können es zum Beispiel verwenden! =Definieren Sie ein Array und geben Sie Etikettendaten aus:- 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]Der generierte Code lautet wie folgt:
<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>Einer der Hauptunterschiede zwischen den Template-Engines Jade und Handlers besteht darin, dass Jade das Schreiben fast des gesamten JavaScripts in den Code zulässt.
9. Kommentare
Jade hat zwei Arten von Kommentaren:2cc198a1d5eb0d3eb508d858c9f5cbdb. Nicht auf der Seite ausgegeben – „//-“
// 普通注释,会输出到渲染后生成的HTML页面 p Hello Jade content //- 特殊注释,不会输出到HTML页面 p (id="footer") copyright 2016Ausgabe:
<!-- 普通注释,会输出到渲染后生成的HTML页面 --> <p> Hello Jade content </p> <p id="footer">copyright 2016</p>
10. If-Anweisung
Fügen Sie der if-Anweisung ein Präfix hinzu, damit Sie Standard-JavaScript-Code schreiben können. Das ist nicht nötig, keine Klammern, letzteres ist natürlich prägnanter.- var user = {} - user.admin = Math.random() > 0.5 if user.admin button(class = "launch") Launch Spacecraft else button(class = "login") Log inDarüber hinaus gibt es es sei denn, was gleichbedeutend mit nicht oder ist! . Hinweis: Es gibt kein Semikolon „;“ am Ende jeder Codezeile
Jede Anweisung
Iteration in Jade Es ist ganz einfach, verwenden Sie einfach die Each-Anweisung.- var language = ['JavaScript', 'Node', 'Python', 'Java'] p each value, index in language p= index + "," + valueAusgabe:
<p> <p>0. JavaScript</p> <p>1. Node</p> <p>2. Python</p> <p>3. Java</p> </p>Beispiel 2:
- var language = ['JavaScript': -1, 'Node': 2, 'Python': 3, 'Java': 1] p each value, key in languages p= key + ":" + valueAusgabe:
<p> <p>JavaScript: -1</p> <p>Node: 2</p> <p>Python: 3</p> <p>Java: 1</p> </p>
12. Filter
Die Funktion des Filters ist: Schreiben Sie einen Textblock in einer anderen Sprache.p :markdown # practical Node.js [This book](http://csdn.net) really helps to grasp many coponents needed for modern-day web development.Hinweis: Um den Markdown-Filter zu verwenden, müssen Sie das Markdown-Modul sowie das Marked- und Markdown-NPM installieren Pakete.
13. Fall
- 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!
14. Funktionsmischung
Wenn Sie Sass- oder Compass-Mixins verwendet haben, sind Sie sicherlich mit ihnen vertraut, und die Methode zur Verwendung von Mixins in Jade ist im Grunde dieselbe.声明的语法: 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
Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der Node.js-Vorlagen-Engine Jade. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!