Swig模版引擎

一、在Node.js中的配置

注意:首先需要npm安裝swig,并且在項目的入口文件中引入該模塊

1. 引入該模塊

var swig = require('swig');

2. 配置指令

app.engine('html',swig.renderFile);  //定義當(dāng)前應(yīng)用所使用的模板引擎
      @ 第1個參數(shù) : 模板引擎的名稱,同時也是模板文件的后綴名
      @ 第2個參數(shù) : 用于解析處理模板內(nèi)容的方法,會調(diào)用swig對象下面的renderFile方法來對
app.set('views','./views');  //設(shè)置模板文件存放的目錄
      @ 第1個參數(shù) : 必須是views
      @ 第2個參數(shù) : views文件夾的路徑,相對當(dāng)前app.js的路徑    
app.set('view engine','html');  //注冊所使用的模板引擎,作用:是把前面兩步配置的模板引擎,注冊到這個app應(yīng)用中
      @ 第1個參數(shù) :必須是view engine
      @ 第2個參數(shù) :和定義模板引擎的第一個參數(shù)必須一致

二、基本語法

1. 變量

{{ name }}

2. 屬性

{{ student.name }}

2. if 指令

{% if paragraph %}
  <p>如果if后面的條件滿足了,則我這個p標(biāo)簽就會被渲染出來</p>
{% else %}
  <a>糟糕,if后面的條件沒有滿足,那就把本標(biāo)簽渲染出來,哈哈哈哈</a>
{% endif %}

3. for 循環(huán)

{% for food in foods %}
  <li>{{food.name}}</li>
{% endfor %}

說明:這個for循環(huán)會遍歷foods數(shù)組,最后會渲染出所有的food

4. 解析html

{% autoescape %}
    {{mark}}
{% endautoescape %}

注意:如果后臺傳的變量是html語句,比如:
mark = <h1>hello</h1>,
@如果直接{{mark}},則頁面會把整體的mark當(dāng)一個字符串解析到頁面,顯示<h1>hello</h1>;
@實際上我們是想把html語法解析出來,把變量放到{% autoescape %}標(biāo)簽中即可實現(xiàn),顯示 hello

5. 模版繼承
模版文件layout.index:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>首頁</title>
</head>
<body>
    <h1>你好,</h1>
    {% block main %} {% endblock %}
    <h1>很高興見到你!</h1>
</body>

index.html繼承模版

{% extends 'layout.html' %}
   {% block main %}
        小明
   {% endblock %}

解釋說明:
swig使用extends來繼承一個模版
swig使用block重寫模版中的某些模塊
首先,定義模版文件;
然后,別的文件繼承這個模版

解釋說明:
block就類似模版中的占位符,我們繼承模版后,可以選擇重寫一些自己需要的block內(nèi)容,上面例子,運行index.html,頁面實際輸出:
你好,
小明
很高興見到你

6. 引入模版
index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文章分頁展示</title>
</head>
{% include 'page.html' %}

引入的模版可以使用當(dāng)前文件的上下文信息

7. 過濾器
假如,想要格式化時間,像下面這樣寫

{{addTime|date('Y/m/d H:i:s',-8*60)}}

有這么多內(nèi)置過濾器
add(value):使變量與value相加,可以轉(zhuǎn)換為數(shù)值字符串會自動轉(zhuǎn)換為數(shù)值。
addslashes:用 \ 轉(zhuǎn)義字符串
capitalize:大寫首字母
date(format[, tzOffset]):轉(zhuǎn)換日期為指定格式
format:格式
tzOffset:時區(qū)
default(value):默認值(如果變量為undefined,null,false)
escape([type]):轉(zhuǎn)義字符
默認: &, <, >, ", '
js: &, <, >, ", ', =, -, ;
first:返回數(shù)組第一個值
join(glue):同[].join
json_encode([indent]):類似JSON.stringify, indent為縮進空格數(shù)
last:返回數(shù)組最后一個值
length:返回變量的length,如果是object,返回key的數(shù)量

lower:同''.toLowerCase()
raw:指定輸入不會被轉(zhuǎn)義
replace(search, replace[, flags]):同''.replace
reverse:翻轉(zhuǎn)數(shù)組
striptags:去除html/xml標(biāo)簽
title:大寫首字母
uniq:數(shù)組去重
upper:同''.toUpperCase
url_encode:同encodeURIComponent
url_decode:同decodeURIComponemt

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,464評論 0 5
  • 一、Java 簡介 Java是由Sun Microsystems公司于1995年5月推出的Java面向?qū)ο蟪绦蛟O(shè)計...
    子非魚_t_閱讀 4,262評論 1 44
  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,196評論 0 13
  • 我需要一粒米的空隙 文,冷月秋風(fēng) 我喜歡藤蔓 和樹木的小院 奔波的勞累 就不會在夏天里失去水分 我的理想忽冷忽熱 ...
    冷月秋風(fēng)qin閱讀 160評論 0 1
  • 北京,三里屯,page one。 她叫徐蘇蘇,此時正拿著一個新的繪本站在人流攢動page one前,她深吸一口氣,...
    夏夏blair_zhang閱讀 416評論 0 1