使用模板引擎

使用模板引擎

以下程式碼將 Jade 設定為模板引擎。 (注:截至 2015 年 12 月,Jade 已更名為 pug。)

const express = require('express');  //Imports the express module
const app = express();  //Creates an instance of the express module

const PORT = 3000; //Randomly chosen port

app.set('view engine','jade'); //Sets jade as the View Engine / Template Engine
app.set('views','src/views'); //Sets the directory where all the views (.jade files) are stored.

//Creates a Root Route
app.get('/',function(req, res){
    res.render('index');  //renders the index.jade file into html and returns as a response. The render function optionally takes the data to pass to the view.
});

//Starts the Express server with a callback
app.listen(PORT, function(err) {
    if (!err) {
        console.log('Server is running at port', PORT);
    } else {
        console.log(JSON.stringify(err));
    }
});

同樣,也可以使用其他模板引擎,例如 Handlebarshbs)或 ejs。記得也要模板引擎。對於 Handlebars,我們使用 hbs 包,對於 Jade,我們有 jade 包,對於 EJS,我們有 ejs 包。

EJS 模板示例

使用 EJS(與其他快速模板一樣),你可以執行伺服器程式碼並從 HTML 訪問伺服器變數。
在 EJS 中,使用“<%”作為開始標記,使用“%>”作為結束標記,使用 <%=var_name%> 可以訪問渲染引數傳遞的變數
。例如,如果伺服器程式碼中有供應陣列,則
可以使用

<h1><%= title %></h1>
   <ul>
<% for(var i=0; i<supplies.length; i++) { %>
    <li>
        <a href='supplies/<%= supplies[i] %>'>
            <%= supplies[i] %>
        </a>
    </li>
<% } %>

正如你在每次在伺服器端程式碼和 HTML 之間切換時所見,你需要關閉當前的 EJS 標記並稍後開啟一個新標記,這裡我們想在 for 命令中建立 li,因此我們需要關閉 EJS 標記在 for 的末尾併為花括號建立新標籤
另一個例子
如果我們想將輸入預設版本作為變數從伺服器端我們使用 <%=
例如:

 Message:<br>
<input type="text" value="<%= message %>" name="message" required>

這裡從伺服器端傳遞的訊息變數將是你輸入的預設值,請注意,如果你沒有從伺服器端傳遞訊息變數,EJS 將丟擲異常。你可以使用 res.render('index', {message: message}); 傳遞引數(對於名為 index.ejs 的 ejs 檔案)。

在 EJS 標籤中,你還可以使用 ifwhile 或你想要的任何其他 javascript 命令。