天天看點

swig模闆 PHP,簡單而強大的swig.jshello,lego.hello,lego.

本文作者:IMWeb json

未經同意,禁止轉載

swig的簡單介紹

swig是JS模闆引擎,它有如下特點:

根據路勁渲染頁面

面向對象的模闆繼承,頁面複用

動态頁面

快速上手

功能強大

swig的使用

swig的變量

{{ foo.bar }}

{{ foo['bar'] }}

//如果變量未定義,輸出空字元。

swig的标簽

extends

使目前模闆繼承父模闆,必須在檔案最前

參數: file

父模闆相對模闆 root 的相對路徑,将在後面介紹如何實作模闆繼承。

block

定義一個塊,使之可以被繼承的模闆重寫,或者重寫父模闆的同名塊

參數: name

塊的名字,必須以字母數字下劃線開頭

parent

将父模闆中同名塊注入目前塊中

include

包含一個模闆到目前位置,這個模闆将使用目前上下文

參數: file

包含模闆相對模闆 root 的相對路徑

{% include "a.html" %}

{% include "template.js" %}

//将引入的檔案内容放到被引用的地方

raw

停止解析标記中任何内容,所有内容都将輸出

參數: file

父模闆相對模闆 root 的相對路徑

for

周遊對象和數組

參數:x

目前循環疊代名

in: 文法标記

y:

可疊代對象。

{% for x in y %}

{{ x }}

{% endfor %}

if

條件語句,參數:

接受任何有效的 JavaScript條件語句

{% if foo %}

foo is true

{% else if "foo" in bar %}

foo in bar

{% else %}

fail

{% endif %}

autoescape

改變目前變量的自動轉義行為

參數: on

目前内容是否轉義

type:

轉義類型,js 或者 html,預設 html

input = '

Hello "you" & \'them\'

';

{% autoescape false %}

{{ input }}

{% endautoescape %}

//

Hello "you" & 'them'

{% autoescape true %}

{{ input }}

{% endautoescape %}

//<p>Hello "you" & 'them' </p>

{% autoescape true "js" %}

{{ input }}

{% endautoescape %}

// \u003Cp\u003EHello \u0022you\u0022 & \u0027them\u0027\u003C\u005Cp\u003E

set

設定一個變量,在目前上下文中複用

{% set foo = [0, 1, 2, 3, 4, 5] %}

{% for num in foo %}

{{ num }}

{% endfor %}

模闆繼承

Swig 使用 extends 和 block 來實作模闆繼承

example:

//layout.html

{% block title %}My Site{% endblock %}

{% block head %}

{% endblock %}

{% block content %}{% endblock %}

//index.html

{% extends './layout.html' %}

{% block title %}My Page{% endblock %}

{% block head %}

{% parent %}

{% endblock %}

{% block content %}

This is just an awesome page.

hello,lego.

//require('pages/index/main');

{% endblock %}

swig模闆經過編譯後:

My Page

This is just an awesome page.

hello,lego.

test

swig模闆在fis3中的應用

swig的模闆繼承可以更好的幫我們組織代碼結構,更好的複用代碼。類似jello擴充的velocity标簽。

如上個例子,可以将公用代碼寫在一個檔案裡,作為母版頁,需要的頁面就繼承這個頁面,而且頁面中的block又可以友善我們自定義需要的内容。

在fis3建構中使用時,調用swig編譯插件,将swig标簽解析成正常的html檔案即可。