• koa ejs 模板引擎


    Koa 中使用 ejs 模板的使用

     

    1、安装 koa-views ejs

    1. 安装 koa-views npm install --save koa-views / cnpm install --save koa-views 
    2. 安装 ejs npm install ejs --save / cnpm install ejs --save
    

     

    2、引入 koa-views 配置中间件

    const views = require('koa-views'); 
    app.use(views('views', { map: {html: 'ejs' }}));

    3Koa 中使用 ejs:

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

    4、Ejs 引入模板

    <%- include header.ejs %>

    5、Ejs 绑定数据

    <%=h%>

    6、Ejs 绑定 html 数据

    <%-h%>

    7、Ejs 模板判断语句

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

    8、Ejs 模板中循环数据

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

    demo :

    //引入 koa模块
    
    /*
    ejs模板引擎的使用:
    
        1.npm install koa-views  --save
    
        2.npm install ejs  --save
    
    
        3.var views = require('koa-views');
    
        app.use(views(__dirname, { extension: 'ejs' }))   //模板的后缀名是ejs
    
    
        4 await ctx.render('index');
    
    
    
    注意:我们需要在每一个路由的render里面都要渲染一个公共的数据
    
        公共的数据放在这个里面,这样的话在模板的任何地方都可以使用
    
    
         ctx.state = {   //放在中间件
             session: this.session,
             title: 'app'
         };
    
    * */
    
    var Koa=require('koa'),
        router = require('koa-router')(),
        views = require('koa-views');
    
    var app=new Koa();
    
    
    
    //配置模板引擎中间件  --第三方中间件
    //app.use(views('views', { map: {html: 'ejs' }}));   //这样配置也可以  注意如果这样配置的话 模板的后缀名是.html
    app.use(views('views',{
        extension:'ejs'  /*应用ejs模板引擎*/
    }))
    
    //写一个中间件配置公共的信息
    app.use(async (ctx,next)=>{
    
        ctx.state.userinfo='张三';
    
        await next();/*继续向下匹配路由*/
    })
    
    router.get('/',async (ctx)=>{
    
       let title="你好ejs";
    
       await ctx.render('index',{
    
            title:title
        });
    
    })
    router.get('/news',async (ctx)=>{
        //ctx.body='这是一个新闻';
    
        let list=['11111','22222','33333'];
    
        let content="<h2>这是一个h2</h2>";
    
        let num=12;
        await ctx.render('news',{
            list:list,
            content:content,
            num:num
        })
    
    })
    
    app.use(router.routes());   /*启动路由*/
    app.use(router.allowedMethods());
    app.listen(3000);
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
    
    
    <% include public/header.ejs%>
    这是一个ejs的模板引擎
    
    <h2><%=title%>-----<%=userinfo%></h2>
    
    
    
    </body>
    </html>
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
    
    <% include public/header.ejs%>
    
    <h2>ejs循环数据---<%=userinfo%></h2>
    
    <ul>
        <%for(var i=0;i<list.length;i++){%>
            <li><%=list[i]%></li>
        <%}%>
    </ul>
    
    <h2>绑定html数据</h2>
    
    <br/>
    
    <%=content%>
    
    
    <br/>
    
    
    <%-content%>
    
    
    <br/>
    <br/>
    
    <h2>条件判断</h2>
    <br/>
    <%if(num>24){%>
    
     大于24
    <%}else{%>
    
    小于24
    
    <%}%>
    
    <br/>
    <br/>
    </body>
    </html>

     

     

  • 相关阅读:
    【剧透高亮】最最最完整剧透加剧情详细解析
    iOS十六进制和字符串的相互转换
    Swift函数编程之Map、Filter、Reduce
    Swift中的Masonry第三方库——SnapKit
    swift中第三方网络请求库Alamofire的安装与使用
    针对苹果最新审核要求为应用兼容IPv6
    使用 Fastlane 实现 IOS 持续集成
    Fastlane为iOS带来持续部署
    @OBJC 和 DYNAMIC
    swift基本用法-数组array
  • 原文地址:https://www.cnblogs.com/loaderman/p/11511475.html
Copyright © 2020-2023  润新知