Koa中 引入使用 EJS 模板引擎

简介: Koa中 引入使用 EJS 模板引擎

1. Koa中引入使用 EJS 模板引擎

简介

“E” 代表什么?可以表示 “可嵌入(Embedded)”,也可以是“高效(Effective)”、“优雅(Elegant)”或者是“简单(Easy)”。

EJS 是一套简单的模板语言,帮你利用普通的 JavaScript 代码生成 HTML 页面。EJS 没有如何组织内容的教条,也没有再造一套迭代和控制流语法;有的只是普通的 JavaScript 代码而已。

EJS 中文文档

安装

koa-views npm地址

// 安装 koa-views 
npm install koa-views --save 
// 安装 ejs 
npm install ejs --save

引入 koa-views 配置中间件

const views = require('koa-views'); 
app.use(views(__dirname + '/views', { 
  extension: 'ejs' 
}));
参数说明
koa-views(root, opts)
  root  视图所在的位置,必须是绝对路径。所有渲染视图都是相对于此路径的。
  opts (optional)
  opts.autoRender   是否使用ctx.body接收呈现的模板字符串。默认为true;
  opts.extension    视图的默认扩展名;
  opts.map      将文件扩展名映射到引擎 
  opts.engineSource   替换为默认引擎源
  opts.options    这些选项将被传递给 View Engine。
补充说明:nodejs 中的 __dirname 与 __filename
__filename  获取当前模块文件的带有完整绝对路径的文件名;【包含文件名本身的绝对路径】
__dirname 获得当前文件所在目录的完整目录名。【不包含文件名本身的绝对路径】

Koa中使用 ejs

// eg:
router.get('/add',async (ctx) => { 
  let title = 'hello koa2';
  await ctx.render('index',{ title }) 
})

2. EJS 模板引擎语法

引入模板

<%- include('public/header')  %>

绑定数据

<%= h %>

绑定 html 数据

<%- h %>

循环数据

<%for(var i=0;i<list.length;i++) { %>
  <li><%= list[i] %></li> 
<%}%>

判断语句

<% if(true){ %> 
  <div>true</div> 
<%} else{ %> 
  <div>false</div> 
<%} %>

3. 完整演示代码

// app.js
const Koa = require('koa');
const Router = require('koa-router');
const views = require('koa-views'); 
const app = new Koa();
const router = new Router();
/*
*配置模板引擎中间件--第三方中间件
*/
app.use(views(__dirname + '/views', { 
  extension: 'ejs' 
}));
// 写一个中间件配置公共的信息,这样在每一个路由的render里面都可使用
app.use(async (ctx,next) => {
  ctx.state.userInfo = 'admin';
  await next();
})
router.get('/',async (ctx, next) => {
  const content = '<p>这是一个晴朗的下午</p>';
  const list = ['111','222','333'];
  const count = 60;
  await ctx.render('index',{
    title: 'Vue',
    content: content,
    list: list,
    count: count,
  })
})
app.use(router.routes());
app.use(router.allowedMethods());
app.listen(3000,()=>{ 
  console.log('http://localhost:3000'); 
});
// 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>Document</title>
</head>
<body>
  <%- include('public/header')  %>
  <div> <%= title %> </div>
  <%- content %>
  <% for(let i = 0; i < list.length; i++ ){ %> 
    <li><%= list[i] %></li>
  <% } %> 
  <% if(count > 50){ %> 
    <span> 大于50 </span>
  <% }else{ %> 
    <span> 小于50 </span>
  <% } %> 
  <div>用户信息:<%= userInfo %> </div>
</body>
</html>
相关文章
|
11月前
|
JavaScript 容器
【Vue源码解析】mustache模板引擎
【Vue源码解析】mustache模板引擎
43 0
|
1月前
|
存储 JavaScript 前端开发
WEB三大主流框架之Vue.js
WEB三大主流框架之Vue.js
|
3月前
Vue3+Vite+Js项目搭建之二:vite.config.js 构建
Vue3+Vite+Js项目搭建之二:vite.config.js 构建
58 1
|
3月前
|
JavaScript
【第12期】Vue3+TypeScript+Vite中动态引入图片等静态资源
【第12期】Vue3+TypeScript+Vite中动态引入图片等静态资源 c
743 0
|
人工智能 前端开发 JavaScript
前端Vue框架在PostCSS怎样使用sass
为什么要使用PostCss 众所周知转换 px 单位的插件有很多,知名的有 postcss-px-to-viewport 和 postcss-pxtorem,前者是将 px 转成 vw,后者是将 px 转成 rem,精简了不常用的配置。将成为vw优先单位使用,以rem作为回退模式。考虑到vw在移动设备的支持度不如rem,这款插件很好的解决了该问题。然后简单的介绍下。
89 0
|
9月前
|
前端开发 JavaScript Java
前端最常用的模板引擎-Handlebars
前端最常用的模板引擎-Handlebars
86 0
|
JavaScript 前端开发
vue源码解析之mustache模板引擎
vue源码解析之mustache模板引擎
80 0
|
JavaScript 前端开发
探索Vue.js:构建Web应用的强大框架
导语: 随着Web开发的不断演变,越来越多的前端框架应运而生。Vue.js是其中之一,自2014年发布以来,迅速成为前端开发领域的热门框架。在本篇博客中,我们将探讨Vue.js的核心概念、特点以及如何使用Vue.js构建一个简单的Web应用。
70 0
|
资源调度 前端开发 JavaScript
「使用 webpack 5 从0到1搭建React+TypeScript 项目环境」2. 集成 css、less 与 sass
「使用 webpack 5 从0到1搭建React+TypeScript 项目环境」2. 集成 css、less 与 sass
「使用 webpack 5 从0到1搭建React+TypeScript 项目环境」2. 集成 css、less 与 sass
|
关系型数据库 MySQL 数据库连接
Koa的上层框架egg.js的学习
Koa的上层框架egg.js的学习