Heim > Web-Frontend > js-Tutorial > Hauptteil

So verwenden Sie die NodeJS-Front-End-Template-Engine Swig

php中世界最好的语言
Freigeben: 2018-05-29 14:51:45
Original
2692 Leute haben es durchsucht

Dieses Mal zeige ich Ihnen, wie Sie die NodeJS-Front-End-Template-Engine Swig verwenden und welche Vorsichtsmaßnahmen für die Verwendung der NodeJS-Front-End-Template-Engine Swig gelten. Das Folgende ist ein praktischer Fall, schauen wir uns das an.

Im Vergleich zu Jade bevorzuge ich immer noch die Swig-Front-End-Template-Engine. Obwohl die Syntax von Jade viel prägnanter und effizienter ist, ist das größte Problem für mich, dass sie nicht so aussieht html. . .

Also habe ich mich für swig entschieden. Die Seitenstruktur kommt mir bekannt vor und ist viel einfacher zu verwenden.

Viele Freunde kämpfen auch mit den Vor- und Nachteilen der beiden. Dies wird von Person zu Person je nach Bedarf unterschiedlich sein

Dies ist ein Vergleich zwischen den beiden

http ://vschart.com /compare/swig-template-engine/vs/jade-template-engin

Lernen wir mehr über swig, die Front-End-Template-Engine

Eine kurze Einführung in swigswig ist eine JS-Template-Engine. Sie verfügt über die folgenden Funktionen:

    Unterstützt die meisten Mainstream-Browser.
  1. Ausdruckskompatibilität ist gut.
  2. Objektorientierte Vorlagenvererbung.
  3. Wenden Sie Filter und Transformationen auf die Ausgabe in der Vorlage an.
  4. kann die Seite entsprechend der Straßenstärke rendern.
  5. Unterstützt die Wiederverwendung von Seiten.
  6. Unterstützt dynamische Seiten.
  7. Erweiterbar und anpassbar.

1. Installation von swig

npm install swig --save
Nach dem Login kopieren

2. Integration mit Express-Frameworkapp.js

var express = require('express');
var swig = require('swig');
var path = require('path')
var app = express();
var port = process.env.PORT || 4000
//设置swig页面不缓存
swig.setDefaults({
 cache: false
})
app.set('view cache', false);
app.set('views','./views/pages/');
app.set('view engine','html');
app.engine('html', swig.renderFile);
app.listen(port);
console.log('server is started at http://localhost:'+port);
//index page
app.get('/',function(req, res){
 res.render('index',{
  title:'首页 ',
  content: 'hello swig'
 })
})
Nach dem Login kopieren

index.html

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>{{ title }}</title>
</head>
<body>
 {{ content }}
</body>
</html>
Nach dem Login kopieren

Dann testen Sie es

node app.js
Nach dem Login kopieren

Geben Sie im Browser ein: http://localhost :4000, der Ausführungseffekt ist wie folgt

Browser running.png

3. Grundlegende Verwendung

1. Variable

{{ name }}
Nach dem Login kopieren
Hier ist zu beachten, dass an beiden Enden Leerzeichen stehen müssen, sodass beim Schreiben von {{name}} ein Fehler auftritt gemeldet werden

2. Attribute

{{ student.name }}
Nach dem Login kopieren

3. Vorlagenvererbung

Swig verwendet Extends und Block, um das Vorlagenvererbungslayout zu implementieren .html

Zuerst definieren wir eine Vorlage

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>{% block title %}{% endblock %}</title>
 {% block head %}{% endblock %}
</head>
<body>
 {% block content %}{% endblock %}
</body>
</html>
Nach dem Login kopieren

In dieser Vorlage definieren wir drei Blöcke, die diese drei Blöcke erben können

Dann schreiben wir eine index.html dazu erb diese Vorlage

{% extends './layout.html' %}
{% block title %} index {% endblock %}
{% block content %}
 <p>
   <h1>hello swig</h1>
  <p>
{% endblock %}
Nach dem Login kopieren

Beachten Sie, dass ich den Block {% Block Head %}{% Endblock %} nicht überschrieben habe

Das heißt, wir können viele Blöcke in der Datei „layout.html“ definieren Vorlagenseite und Unterseiten können eine selektive Implementierung haben.

4.include-Vorlage

Fügt eine Vorlage für den aktuellen Standort hinzu. Diese Vorlage verwendet den aktuellen Kontext

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>{% block title %}{% endblock %}</title>
 {% include "./includes/head.html" %}
 {% block head %}{% endblock %}
</head>
<body>
 {% include "./includes/header.html" %}
 {% block content %}{% endblock %}
</body>
</html>
Nach dem Login kopieren

5.if Urteil

{ % if name === '郭靖' % }
 hello 靖哥哥
{ % endif % }
Nach dem Login kopieren

6.if-else Urteil

{ % if name === '郭靖' % }
 hello 靖哥哥
{ % elseif name === '黄蓉' % }
 hello 蓉妹妹
{ % else % }
 hello 欧阳峰
{ % endif % }
Nach dem Login kopieren

7.for-Schleife

Zuerst die Kastanie:

// arr = [1, 2, 3]
{ % for key, val in arr % }
 <p>{ { key } } -- { { val } }</p>
{ % endfor % }
Nach dem Login kopieren

Für in Schleifen integrierte Variablen:

    loop.index: Der Index der aktuellen Schleife (beginnend mit 1)
  1. loop.index0: Index der aktuellen Schleife (beginnend bei 0)
  2. loop.revindex: Index der aktuellen Schleife beginnend am Ende (beginnend bei 1)
  3. loop.revindex0: Der Index der aktuellen Schleife beginnend am Ende (beginnend bei 0)
  4. loop.key: Wenn die Iteration ein Objekt ist , es ist der Schlüssel der aktuellen Schleife, ansonsten ist es dasselbe wie loop.index
  5. loop.first: Gibt true zurück, wenn es der erste Wert ist
  6. loop.last: Gibt true zurück, wenn es der letzte Wert ist
  7. loop.cycle: eine Hilfsfunktion, die den angegebenen Parameter als Zyklus verwendet
  8. Verwendung:
// arr = [1, 2, 3]
{ % for key, val in arr % }
 <p>{{ loop.index }} -- {{ key }} -- {{ val }}</p>
{ % endfor % }
Nach dem Login kopieren

8. Leistungsstarke integrierte Filter

  1. add(value):使变量与value相加,可以转换为数值字符串会自动转换为数值。

  2. addslashes:用 \ 转义字符串

  3. capitalize:大写首字母

  4. date(format[, tzOffset]):转换日期为指定格式

  5. format:格式

  6. tzOffset:时区

  7. default(value):默认值(如果变量为undefined,null,false)

  8. escape([type]):转义字符

  9. 默认: &, <, >, ", '

  10. js: &, <, >, ", ', =, -, ;

  11. first:返回数组第一个值

  12. join(glue):同[].join

  13. json_encode([indent]):类似JSON.stringify, indent为缩进空格数

  14. last:返回数组最后一个值

  15. length:返回变量的length,如果是object,返回key的数量

  16. lower:同''.toLowerCase()

  17. raw:指定输入不会被转义

  18. replace(search, replace[, flags]):同''.replace

  19. reverse:翻转数组

  20. striptags:去除html/xml标签

  21. title:大写首字母

  22. uniq:数组去重

  23. upper:同''.toUpperCase

  24. url_encode:同encodeURIComponent

  25. url_decode:同decodeURIComponemt

使用方法:

例如我们要格式化一个时间,使用方法和linux上的管道命令非常像

{{ birthday|date('Y-m-d') }}
Nach dem Login kopieren

大写首字母

{{ name|title }}
Nach dem Login kopieren

9.set命令

用来设置一个变量,在当前上下文中复用

{% set foo = [0, 1, 2, 3, 4, 5] %}
 {% for num in foo %}
 <li>{{ num }}</li>
{% endfor %}
Nach dem Login kopieren

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

vue-cli与webpack处理静态资源的方法及webpack打包使用步奏详解

JavaScript常用截取字符串方法使用汇总

Das obige ist der detaillierte Inhalt vonSo verwenden Sie die NodeJS-Front-End-Template-Engine Swig. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage