上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 我是底部