如何使用nodejs前端模板引擎swig
這次帶給大家如何使用nodejs前端模板引擎swig,使用nodejs前端模板引擎swig的注意事項有哪些,下面就是實戰案例,一起來看一下。
相對於jade,我還是比較喜歡swig前端模板引擎,jade雖然語法簡練高效了不少,但是在我這最大的問題是
他沒有一個html該有的樣子。 。 。
所以我還是決定使用swig,頁面結構,樣子都是熟悉的樣子,使用起來順手了許多。
很多朋友也在糾結二者的優缺點,這個根據需求因人而異吧
這是兩者的比較
http://vschart.com /compare/swig-template-engine/vs/jade-template-engin
#下面我們一起學習下swig這個前端模板引擎
swig的簡單介紹
swig是JS模板引擎,它有以下特點:
支援大多數主流瀏覽器。
表達式相容性好。
物件導向的範本繼承。
將過濾器和轉換套用到模板中的輸出。
可依路勁渲染頁面。
支援頁面重複使用。
支援動態頁面。
可擴充、可自訂。
一.swig的安裝
#npm install swig --save
二.和express框架整合
app.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' }) })
index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>{{ title }}</title> </head> <body> {{ content }} </body> </html>
然後測試執行
node app.js
在瀏覽器輸入:http://localhost :4000, 執行效果如下
瀏覽器運行.png
三.基本用法
1.變數
{{ name }}
這裡要注意的是前後兩端都要有空格,這樣{{name}}寫就會報錯
2.屬性
{{ student.name }}
3.模板繼承
Swig 使用extends 和block 來實作範本繼承layout.html
#首先我們定義一個模板
<!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>
這個模板裡面我們定義了三個block區塊,子模板可以對這三個block繼承
然後我們寫一個index.html繼承這個模板
{% extends './layout.html' %} {% block title %} index {% endblock %} {% block content %} <p> <h1>hello swig</h1> <p> {% endblock %}
注意我這裡沒有重寫{% block head %}{% endblock %}這個區塊
也就是說我們可以在layout.html範本頁裡面定義很多block,而子頁面可以有選擇性的實現。
4.include範本
包含一個範本到目前位置,這個範本將使用目前上下文
<!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>
#5.if判斷
{ % if name === '郭靖' % } hello 靖哥哥 { % endif % }
6.if-else判斷
{ % if name === '郭靖' % } hello 靖哥哥 { % elseif name === '黄蓉' % } hello 蓉妹妹 { % else % } hello 欧阳峰 { % endif % }
7.for迴圈
先上栗子:
// arr = [1, 2, 3] { % for key, val in arr % } <p>{ { key } } -- { { val } }</p> { % endfor % }
for迴圈內建變數:
loop.index:目前迴圈的索引(1開始)
loop.index0:目前循環的索引(0開始)
loop.revindex:當前循環從結尾開始的索引(1開始)
- ##loop.revindex0 :當前循環從結尾開始的索引(0開始)
- loop.key:如果迭代是對象,是當前循環的鍵,否則同loop.index
- loop.first:如果是第一個值回傳true
- loop.last:如果是最後一個值回傳true
- loop.cycle:一個幫助函數,以指定的參數作為週期
// arr = [1, 2, 3] { % for key, val in arr % } <p>{{ loop.index }} -- {{ key }} -- {{ val }}</p> { % endfor % }
8.強大的內建過濾器
add(value):使变量与value相加,可以转换为数值字符串会自动转换为数值。
addslashes:用 \ 转义字符串
capitalize:大写首字母
date(format[, tzOffset]):转换日期为指定格式
format:格式
tzOffset:时区
default(value):默认值(如果变量为undefined,null,false)
escape([type]):转义字符
默认: &, <, >, ", '
js: &, <, >, ", ', =, -, ;
first:返回数组第一个值
join(glue):同[].join
json_encode([indent]):类似JSON.stringify, indent为缩进空格数
last:返回数组最后一个值
length:返回变量的length,如果是object,返回key的数量
lower:同''.toLowerCase()
raw:指定输入不会被转义
replace(search, replace[, flags]):同''.replace
reverse:翻转数组
striptags:去除html/xml标签
title:大写首字母
uniq:数组去重
upper:同''.toUpperCase
url_encode:同encodeURIComponent
url_decode:同decodeURIComponemt
使用方法:
例如我们要格式化一个时间,使用方法和linux上的管道命令非常像
{{ birthday|date('Y-m-d') }}
大写首字母
{{ name|title }}
9.set命令
用来设置一个变量,在当前上下文中复用
{% set foo = [0, 1, 2, 3, 4, 5] %} {% for num in foo %} <li>{{ num }}</li> {% endfor %}
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
vue-cli与webpack处理静态资源的方法及webpack打包使用步奏详解
以上是如何使用nodejs前端模板引擎swig的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

要連接 MySQL 資料庫,需要遵循以下步驟:安裝 mysql2 驅動程式。使用 mysql2.createConnection() 建立連接對象,其中包含主機位址、連接埠、使用者名稱、密碼和資料庫名稱。使用 connection.query() 執行查詢。最後使用 connection.end() 結束連線。

Node.js 中存在以下全域變數:全域物件:global核心模組:process、console、require執行階段環境變數:__dirname、__filename、__line、__column常數:undefined、null、NaN、Infinity、-Infinity

Node.js 安裝目錄中有兩個與 npm 相關的文件:npm 和 npm.cmd,區別如下:擴展名不同:npm 是可執行文件,npm.cmd 是命令視窗快捷方式。 Windows 使用者:npm.cmd 可以在命令提示字元中使用,npm 只能從命令列執行。相容性:npm.cmd 特定於 Windows 系統,npm 跨平台可用。使用建議:Windows 使用者使用 npm.cmd,其他作業系統使用 npm。

PiNetwork節點詳解及安裝指南本文將詳細介紹PiNetwork生態系統中的關鍵角色——Pi節點,並提供安裝和配置的完整步驟。 Pi節點在PiNetwork區塊鏈測試網推出後,成為眾多先鋒積極參與測試的重要環節,為即將到來的主網發布做準備。如果您還不了解PiNetwork,請參考Pi幣是什麼?上市價格多少? Pi用途、挖礦及安全性分析。什麼是PiNetwork? PiNetwork項目始於2019年,擁有其專屬加密貨幣Pi幣。該項目旨在創建一個人人可參與

Node.js 和 Java 的主要差異在於設計和特性:事件驅動與執行緒驅動:Node.js 基於事件驅動,Java 基於執行緒驅動。單執行緒與多執行緒:Node.js 使用單執行緒事件循環,Java 使用多執行緒架構。執行時間環境:Node.js 在 V8 JavaScript 引擎上運行,而 Java 在 JVM 上運行。語法:Node.js 使用 JavaScript 語法,而 Java 使用 Java 語法。用途:Node.js 適用於 I/O 密集型任務,而 Java 適用於大型企業應用程式。

Node.js 和 Java 在 Web 開發中各有優劣,因此選擇取決於專案需求。 Node.js 擅長即時應用程式、快速開發和微服務架構,而 Java 則在企業級支援、效能和安全性方面佔優。
