Node.js+Webpack开发实战
上QQ阅读APP看书,第一时间看更新

5.7 模板渲染

Koa也可以通过使用模板引擎来渲染HTML模板,为了减少学习门槛,本节还是使用ejs作为示例。

5.7.1 快速开始

使用ejs模板需要安装koa-ejs模块:

npm install koa-ejs --save

开始编码:

<!-- templates/home.ejs -->
<p>欢迎你! <%= name %>! 现在时间: <%= now %></p>

访问http://localhost:10000,将输出:

欢迎你! xialei! 现在时间: 2019/11/10 下午19:25:55

Koa渲染模板调用ctx.render()方法,该方法签名如下:

ctx.render(view[, objects][, callback])

· view:视图文件。

· objects:视图变量。

· Callback:回调函数。

koa-ejs还支持ctx.state,也就是说挂载到ctx.state中的变量可以直接在ejs模板中使用,不需要作为第二个参数传递给ctx.render()。

5.7.2 模板布局

模板布局是一项很好用的功能,Web页面一般是由以下结构组成的:

· 头部区域(包括导航栏)。

· 内容主体区域。

· 底部区域(包括版权声明、友情链接等)。

实际上头部区域和底部区域是一样的,真正有变化的内容是内容主体区域,因此可以将头部区域和底部区域作为不变的内容,内容主体作为变化内容来构建布局。

koa-ejs启用模板布局需要配置layout选项,上节中配置为false关闭了布局,本节传递一个main作为参数,最终的布局模板文件名为main.ejs。

<!-- templates/main.ejs -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title><%= title %></title>
</head>
<body>
    <header>我是头部</header>
    <%- body %>
    <footer>我是底部</footer>
</body>
</html>

可以看到头部和底部都是固定的,页面标题和body是通过变量控制的。

<!-- templates/home.ejs -->
<p>欢迎你! <%= name %>! 现在时间: <%= now %></p>

启用模板布局后访问http://localhost:10000/,输出如下:

我是头部
欢迎你! xialei! 现在时间: 2019/11/10 下午19:28:55

我是底部