跳到主要内容

koa-views

一、认识


koa-views 是一个 Koa 中间件,用于在 Koa 应用中实现模板引擎的渲染。它允许你将动态数据与 HTML 模板结合,以生成最终的 HTML 页面,常用于服务器端渲染。

二、API


2.1 options

  • map: 映射其他模板引擎,以支持自定义扩展名。

  • extension: 指定模板文件的扩展名,如 ejs、pug 等。

2.2 ctx.render(view, locals)

ctx.render(view, locals): 渲染指定的模板视图,locals 是传递给模板的数据对象。

三、语法


3.1 EJS

const Koa = require('koa');
const Router = require('koa-router');
const KoaViews = require('koa-views');
const Path = require('path');

const app = new Koa();
const router = new Router();

// 配置 koa-views
app.use(KoaViews(Path.join(__dirname, 'views'), {
extension: 'ejs', // 使用 EJS 模板引擎
}));

// 定义路由
router.get('/', async (ctx) => {
await ctx.render('index', { title: 'Hello, Koa Views!' });
});

app.use(router.routes()).use(router.allowedMethods());

// 启动服务器
app.listen(3000, () => {
console.log('Server listening on port 3000');
});

3.2 Handlebars

const Koa = require("koa");
const Views = require("koa-views");
const Path = require("path");
const Router = require("koa-router");

const app = new Koa();
const router = new Router({ prefix: "" });

app.use(
Views(Path.resolve(__dirname, "views"), {
extension: "hbs",
map: { hbs: "handlebars" },
})
);

router.get("/page", async (ctx) => {
await ctx.render("index", {
title: "页面渲染",
});
});

app.use(router.routes());

app.listen(3002, () => {
console.log("页面渲染服务启动成功!");
});