zoukankan      html  css  js  c++  java
  • koa中使用 ejs

    安装 koa-views 和 ejs

      npm install --save koa-views

      npm install ejs --save

      https://www.npmjs.com/package/koa-views

    引入 koa-views ,配置 ejs 模板引擎

    配置方式1:

    const Koa = require('koa')
    const app = new Koa()
    const router = require('koa-router')()
    const views = require('koa-views')
    const ejs = require('ejs')
    
    //配置模板引擎中间件 koa-views(第三方中间件)
    //方式1
    app.use(views( 'views', {
        map: {
            html: 'ejs' //应用ejs 模板引擎
        }
    }))
    
    router.get('/',async (ctx)=>{
        console.log("首页")
        let title = "首页"
        await ctx.render('index',{
            title:title
        })
    })
    
    app.use(router.routes()); 
    app.use(router.allowedMethods());
    
    app.listen(3000);
    

    官方示例:

     方式1渲染的页面是 index.html 页面

     配置方式2:

    const Koa = require('koa')
    const app = new Koa()
    const router = require('koa-router')()
    const views = require('koa-views')
    const ejs = require('ejs')
    
    //配置模板引擎中间件 koa-views(第三方中间件)
    //方式2
    app.use(views('views', { 
        extension: 'ejs' //应用 ejs 模板引擎 
    }))
    
    router.get('/',async (ctx)=>{
        console.log("首页")
        let title = "首页"
        await ctx.render('index',{
            title:title
        })
    })
    
    app.use(router.routes()); 
    app.use(router.allowedMethods());
    
    app.listen(3000);
    

    方式2 渲染的是 index.ejs 页面

    在 koa 中使用 ejs:

    ① 引入其他模板

      如 渲染首页时,首页加载 header 页面头部,只需要在 index.ejs 中引入 header.ejs

      

      渲染成功:

      

    ② 绑定数据

      传入一个 msg 到 index.ejs 中

      

      index.js 中 渲染 msg:<%=%> 语法

       

       一些数据,很多页面都需要用到的,可以 写一个 koa 中间件 将这个公共信息 传入到每个页面中:

      

       直接在需要用到这个数据的页面中渲染

      

       index.ejs 和 login.ejs 中都可以直接渲染出 userName:

       

       

    ③ 绑定 html 数据

      

        以 <%-%> 语法渲染:

      

    ④ 条件判断语法

      

       

       

    ⑤ 列表循环语法

       

       

       

    app.js

    const Koa = require('koa')
    const app = new Koa()
    const router = require('koa-router')()
    const views = require('koa-views')
    const ejs = require('ejs')
    
    //配置模板引擎中间件 koa-views(第三方中间件)
    app.use(views('views', { 
        extension: 'ejs' //应用 ejs 模板引擎 
    }))
    
    //一个中间件配置公共的信息
    app.use(async (ctx,next)=>{
        ctx.state.userName="jack"
        await next() //继续向下匹配路由
    })
    
    router.get('/',async (ctx)=>{
        console.log("首页")
        let msg = "hello world"
        let htmlMsg = '<h6>htmlMsg</h6>'
        let num = 10
        let list = ['aaa','bbb','ccc','ddd']
        await ctx.render('index',{
            msg:msg,
            htmlMsg:htmlMsg,
            num:num,
            list:list
        })
    })
    
    router.get('/login', async (ctx) => {
        console.log("登录页")
        await ctx.render('login')
    })
    
    app.use(router.routes()); 
    app.use(router.allowedMethods());
    
    app.listen(3000);
    

    index.ejs

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <h3>index.ejs页面</h3>
        <h5>加载公共模板</h5>
        <%- include('./layout/header.ejs'); %>
        <h5>绑定数据</h5>
        <%=msg%><br>
        公共信息:<%=userName%>
        <h5>绑定html数据</h5>
        <%-htmlMsg%>
        <h5>条件判断</h5>
        <%if(num=10){%>
            num = 10 
        <%}else{%>
            num!=10
        <%}%>
        <h5>列表循环</h5>
        <%for(let i=0;i<list.length;i++){%>
            <li><%=list[i]%></li>
        <%}%>
    </body>
    </html>
    
  • 相关阅读:
    HDU 5521 Meeting
    HDU 5170 GTY's math problem
    HDU 5531 Rebuild
    HDU 5534 Partial Tree
    HDU 4101 Ali and Baba
    HDU 5522 Numbers
    HDU 5523 Game
    ZUFE OJ 2301 GW I (3)
    POJ 2398 Toy Storage
    POJ 2318 TOYS
  • 原文地址:https://www.cnblogs.com/shanlu0000/p/13168275.html
Copyright © 2011-2022 走看看