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>
相关文章
|
JavaScript 容器
【Vue源码解析】mustache模板引擎
【Vue源码解析】mustache模板引擎
67 0
|
JavaScript
Nuxt.js(Vue SSR)项目配置以及开发细节
Nuxt.js(Vue SSR)项目配置以及开发细节
242 0
|
1月前
|
JavaScript 前端开发 数据可视化
哪些 JS 框架支持 SPA 单页面应用
目前主流的JavaScript框架如React、Vue和Angular都支持SPA(单页面应用)开发,能够实现页面无刷新更新,提升用户体验。其他如Ember.js、Backbone.js等也具备SPA开发能力。
|
3月前
|
人工智能 开发框架 前端开发
Web开发之Vue.js
Web开发之Vue.js
40 3
|
6月前
|
缓存 JavaScript 前端开发
Nuxt.js实战:Vue.js的服务器端渲染框架
Nuxt.js提供了开发、构建和部署的完整工作流。使用nuxt命令启动开发服务器,nuxt build进行生产构建,nuxt start启动生产服务器
105 0
|
前端开发 JavaScript Java
前端最常用的模板引擎-Handlebars
前端最常用的模板引擎-Handlebars
129 0
|
前端开发 JavaScript UED
为什么选择 Next.js 框架?
为什么选择 Next.js 框架?
284 0
|
JavaScript 前端开发
vue源码解析之mustache模板引擎
vue源码解析之mustache模板引擎
111 0
|
存储 JSON JavaScript
Vue中 引入使用 js-cookie
Vue中 引入使用 js-cookie
471 0