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 前端开发
js模板引擎,哪个好
js模板引擎模板引擎是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档。js模板引擎包括如下:template官方参考:http://aui.
897 0
|
缓存 JavaScript 前端开发
|
前端开发 JavaScript Java
前端最常用的模板引擎-Handlebars
前端最常用的模板引擎-Handlebars
142 0
|
JavaScript
Nuxt.js(Vue SSR)项目配置以及开发细节
Nuxt.js(Vue SSR)项目配置以及开发细节
271 0
|
JavaScript PHP 前端开发
【Laravel 5.5 + Vue 2.x + Element 2.x】使用Vue.js配合Laravel开发
请首先按照Laravel快速入门完成Laravel的基本了解和安装。 然后在根目录下的package.json文件中将vue的版本改成你希望使用的版本(Laravel 5.5 默认使用2.1.10),然后执行npm install. 也可以,直接npm install, 然后再运行npm install vue安装最新的稳定版vue. Laravel中默认有vue example files。
2286 0
|
JavaScript 前端开发
Vue 源码之 mustache 模板引擎(一)
Vue 源码之 mustache 模板引擎(一)
546 0
|
JavaScript 前端开发
vue源码解析之mustache模板引擎
vue源码解析之mustache模板引擎
121 0
|
JavaScript 容器
【Vue源码解析】mustache模板引擎
【Vue源码解析】mustache模板引擎
87 0

热门文章

最新文章