nodejs学习笔记17-koa中使用ejs

490 阅读1分钟

前言

使用ejs中间件,还需要安装插件koa-views

安装依赖

npm install koa-views --save
npm install ejs --save

app.js

const Koa = require('koa');
const views = require("koa-views");
const router = require("koa-router")(); // 引入和实例化路由 推荐

const app = new Koa();

// 配置第三方中间件
// app.use(views("views", {map: {html: 'ejs'}})); // views 第一个参数:静态页面的路径 第二个参数配置对象 这样配置 模板文件必须要.html结尾
app.use(views("views", {extension: 'ejs'})) // 两种配置方法一样 模板文件的后缀名:.ejs


// 中间件配置公共的数据 // 所有的模板文件都能拿到这些数据
app.use(async (ctx, next)=>{
  ctx.state = {
    cUserName: '张三'
  }
  await next(); // 继续向下匹配路由
})


// 配置路由
router.get('/', async(ctx)=>{
  const pageData = {
    title: '标题',
    list: [1,2,3,4]
  }
  await ctx.render("index", pageData)//  此处要添加await 因为render 是异步
});


router.get('/details', async(ctx)=>{
  ctx.body = '详情';
});

// 启动路由
app.use(router.routes()); // 启动路由   可以链式调用
app.use(router.allowedMethods()); // 可配磕不配

app.listen(8081);

views/index.ejs

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title><%=title%></title>
</head>
<body>
  <%- include("./public_header.ejs")%>
  <h1>首页 这是一个ejs 的模板引擎--<%=cUserName%></h1>
  <div><%=list%></div>
</body>
</html>

views/public_header.ejs

<h3>这是公共头部模块--<%=cUserName%></h3>

image.png