1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Node.js中Koa使用ejs模板引擎和art-template模板引擎

Node.js中Koa使用ejs模板引擎和art-template模板引擎

时间:2018-11-11 00:22:42

相关推荐

Node.js中Koa使用ejs模板引擎和art-template模板引擎

一. 使用ejs模板引擎

1. 安装所需包

# 在项目中下载koa-views包npm i koa-views# 在项目中下载ejs包npm i ejs

2. 代码实现

入口文件index.js:

const Koa = require('koa');const Router = require('koa-router');const app = new Koa();const router = new Router();// 1. 引入koa-viewsconst views = require('koa-views');// 2. 配置模板引擎中间件:views()第一个参数是视图模板所在的路径,第二个参数是应用ejs模板引擎app.use(views('views', { extension: 'ejs' })); // 若这样配置,模板的后缀名是.ejs//app.use(views('views', { map: { html: 'ejs' } })); // 若这样配置,模板的后缀名是.html// 我们需要在每个路由的render中都渲染一个公共的数据// 写一个中间件配置公共信息app.use(async (ctx, next) => {// 公共的数据要放在ctx.state中ctx.state = {userinfo: '张三',age: '18',}await next()})router.get('/', async (ctx, next) => {let title = '你好ejs'// 3. 异步渲染模板await ctx.render('index.ejs', {// 绑定数据title: title})})router.get('/news', async (ctx, next) => {let arr = ['111111', '22222', '444444']let content = "<h2>这是一个h2</h2>"let num = 123await ctx.render('news.ejs', {list: arr,content: content,num: num})});app.use(router.routes());app.use(router.allowedMethods());app.listen(3000, () => {console.log('starting at port 3000');});

/views/index.ejs:

<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>ejs模板引擎</title></head><body><%- include('./public/header.ejs') %>这是一个ejs模板引擎<h2><%=title%>-----<%=userinfo%></h2></body></html>

/views/news.ejs:

<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>ejs数据绑定</title></head><body><h2>引入外部模块</h2><%- include('./public/header.ejs') %><h2>ejs循环渲染数据</h2><ul><%for(var i=0;i<list.length;i++){%><li><%=list[i]%></li><%}%></ul><h2>绑定html数据</h2><%-content%><h2>条件判断</h2><% if(num>24){ %>大于24<%} else{ %> 小于24<%} %><h2>公共数据</h2><%=userinfo%></body></html>

/views/public/header.ejs:

<h1 class="title">这是一个头部的模块</h1>

二. 使用art-template模板引擎

art-templatehttp://aui.github.io/art-template/zh-cn/

原始语法和ejs一模一样都用<% %>,标准语法用的是{{ }},这里代码示例用的是标准语法。

1. 安装所需包

npm install --save art-templatenpm install --save koa-art-template

2. 代码实现

入口文件 index.js:

const Koa = require('koa');const Router = require('koa-router');const app = new Koa();const router = new Router();const path = require('path');// 1. 引入koa-art-templateconst render = require('koa-art-template');// 2. 配置art-template模板引擎render(app, {root: path.join(__dirname, 'views'), // 视图的位置extname: '.html', // 后缀名debug: process.env.NODE_ENV !== 'production' // 是否开启调试模式});// 我们需要在每个路由的render中都渲染一个公共的数据// 写一个中间件配置公共信息app.use(async (ctx, next) => {// 公共的数据要放在ctx.state中ctx.state = {userinfo: '张三',age: '18',}await next()})router.get('/', async (ctx, next) => {let title = '你好koa-art-template'// 3. 异步渲染模板await ctx.render('index', {// 绑定数据title: title})})router.get('/news', async (ctx, next) => {let arr = ['111111', '22222', '444444']let content = "<h2>这是一个h2</h2>"let num = 123await ctx.render('news', {list: arr,content: content,num: num})});app.use(router.routes());app.use(router.allowedMethods());app.listen(3000, () => {console.log('starting at port 3000');});

/views/news.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></head><body><h2>引入外部模块</h2>{{include './public/header.html'}}<h2>绑定数据</h2>{{list.name}}<h2>公共数据</h2>{{userinfo}}<h2>绑定html数据</h2>{{@list.h}}<h2>条件判断</h2>{{if num>20}}<span>大于20</span>{{else}}<span>小于20</span>{{/if}}<h2>循环渲染数据</h2><ul>{{each list.data}}<li>{{$index}}--{{$value}}</li>{{/each}}</ul></body></html>

/views/public/header.html:

<h1 class="title">这是一个头部的模块</h1>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。