简介
koa-ejs
是一个基于 ejs
模板引擎的中间件,用于在 Koa 框架中渲染 HTML 页面。它可以方便地处理模板和数据之间的交互,并且支持模板继承和局部模板。
安装
使用 npm
可以很方便地安装 koa-ejs
。
npm install koa-ejs --save
使用方法
首先,在应用程序中引入 koa-ejs
模块。
-- -------------------- ---- ------- ----- --- - --------------- ----- ------ - ------------------- ----- --- - --- ------ ------------ ----------- - ----- -------------------- --------- ------- ----------- -------- ------- ---
然后,将视图文件存放在 views
目录下,命名为 .html
后缀。例如,我们有一个名为 index.html
的文件:
-- -------------------- ---- ------- --------- ----- ----- ---------- ------ ----- ---------------- ---------- ----- ---------- ------- ------ ------- ------- ------- ------- -------
现在,我们可以在路由处理函数中使用 ctx.render
方法来渲染视图并传递数据。
app.use(async (ctx) => { await ctx.render('index', { title: 'Koa-ejs Tutorial', message: 'Welcome to Koa-ejs tutorial!', }); });
在这里,ctx.render
方法将 index.html
视图文件渲染为 HTML 页面,并将 { title: 'Koa-ejs Tutorial', message: 'Welcome to Koa-ejs tutorial!' }
作为参数传递给模板。
模板继承
使用模板继承可以使页面布局更加灵活和可重用。我们可以定义一个名为 template.html
的模板文件:
-- -------------------- ---- ------- --------- ----- ----- ---------- ------ ----- ---------------- ---------- ----- ---------- ------- ------ --- ---- -- ------- -------
在这里,<%- body %>
是一个占位符,它将被子模板替换成内容。
然后,在子模板中使用 <% include %>
指令引用父模板。
<% extend('template.html') %> <% block content %> <h1><%= message %></h1> <% endblock %>
在这里,<% block content %>
和 <% endblock %>
定义了一个名为 content
的块。它将被插入到父模板中的占位符 <%- body %>
处。
局部模板
局部模板是一种在不同页面之间共享代码的方式。我们可以使用 <%- include %>
指令引用局部模板。
例如,我们有一个名为 header.html
的局部模板:
<header> <h1>My Website</h1> <nav> <a href="/">Home</a> <a href="/about">About</a> <a href="/contact">Contact</a> </nav> </header>
然后,在视图文件中使用 <%- include %>
指令引用局部模板。
-- -------------------- ---- ------- --------- ----- ----- ---------- ------ ----- ---------------- ---------- ----- ---------- ------- ------ --- ---------------------- -- ------- ------- ------- ------- -------
示例代码
-- -------------------- ---- ------- ----- --- - --------------- ----- ---- - ---------------- ----- ------ - ------------------- ----- --- - --- ------ ----------- - ----- -------------------- --------- ------- ----------- -------- ----- - ----------------------------------------------------------- -------- ----------------------------------------------------------------------------------