• koa 基础(十三)koa-art-template 模板引擎的使用


    1.项目目录

    2.app.js

    /**
     * http://aui.github.io/art-template/koa/
     * 1、npm install --save art-template
     *    npm install --save koa-art-template
     * 2、const render = require('koa-art-template');
     * 3、
     * render(app, {
     *   root: path.join(__dirname, 'view'), // 视图的位置
     *   extname: '.art', // 后缀名
     *   debug: process.env.NODE_ENV !== 'production' // 是否开启调试模式
     * })
     * 4、await ctx.render('user')
     */
    // 引入模块
    const Koa = require('koa');
    const router = require('koa-router')(); /*引入是实例化路由 推荐*/
    const render = require('koa-art-template');
    const path = require('path');
    
    // 实例化
    let app = new Koa();
    
    // 配置 koa-art-template 模板引擎
    render(app, {
      root: path.join(__dirname, 'views'), // 视图的位置
      extname: '.html', // 后缀名
      debug: process.env.NODE_ENV !== 'production' // 是否开启调试模式
    })
    
    router.get('/', async (ctx) => {
      // ctx.body = '首页';
      let list = {
        name: '张三',
        h: '<h2>这是一个h2</h2>',
        num: 20,
        data: ['11111', '22222', '33333']
      }
      await ctx.render('index', {
        list: list
      })
    })
    
    router.get('/news', async (ctx) => {
      // ctx.body = '新闻';
      let app = {
        name: '张三',
        h: '<h2>这是一个h2</h2>',
        num: 20,
        data: ['11111', '22222', '33333']
      }
      await ctx.render('news', {
        list: app
      });
    })
    
    app.use(router.routes());
    app.use(router.allowedMethods());
    
    app.listen(3000);

    3.原始用法

    views/index.html

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <meta http-equiv="X-UA-Compatible" content="ie=edge">
      <title>Document</title>
      <link rel="stylesheet" href="css/basic.css" />
    </head>
    
    <body>
      <h2 class="title">这是一个koa-art-template</h2>
      <h2>绑定数据</h2>
      <%=list.name%>
        <br />
        <%= 1 + 2 %>
          <br />
          <hr />
          <br />
          <h2>绑定html数据</h2>
          <%=list.h%>
            <%-list.h%>
              <h2>条件</h2>
              <%if(num>10){%>
                大于10
                <%}else{%>
                  小于10
                  <%}%>
                    <br />
                    <hr />
                    <br />
    
                    <h2>循环数据</h2>
                    <ul>
                      <%for(var i=0;i<list.data.length;i++){%>
                        <li>
                          <%=list.data[i]%>
                        </li>
                        <%}%>
                    </ul>
                    <br />
                    <hr />
                    <br />
    
                    <% include('./public/footer.html')%>
    </body>
    
    </html>

    4.art-template 的用法 -- 类似于 angular 语法

    views/news.html

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <meta http-equiv="X-UA-Compatible" content="ie=edge">
      <title>Document</title>
      <link rel="stylesheet" href="css/basic.css" />
    </head>
    
    <body>
      <h2 class="title">这是一个koa-art-template</h2>
      <h2>绑定数据</h2>
      {{list.name}}
      <br />
      <hr />
      <br />
    
      <h2>绑定html数据</h2>
      {{@list.h}}
      <h2>条件</h2>
      {{if num>20}} <span>大于20</span> {{else}} <span>小于20</span> {{/if}}
      <br />
      <hr />
      <br />
    
      <h2>循环数据</h2>
      <ul>
        {{each list.data}}
        <li>{{$index}} --- {{$value}}</li>
        {{/each}}
      </ul>
      <br />
      <hr />
      <br /> {{include './public/footer.html'}}
    </body>
    
    </html>

    views/public/footer.html

    <h1>这是一个底部</h1>

    5.效果图

  • 相关阅读:
    JavaScript之正则表达式(2)
    JavaScript之正则表达式(1)
    交换两个变量的值,不借助第三个变量的 三种方法(JS实现)
    网络基础之 OSI七层模型
    jq获取被选中的option的值。jq获取被选中的单选按钮radio的值。
    常见的XSS攻击代码
    php缓存模块apc可能导致php-fpm终止
    Flex布局:实现左右两列自伸缩撑满效果的
    linux系统莫名被黑的诡异经历
    谈谈我对php通信的理解及人生小感
  • 原文地址:https://www.cnblogs.com/crazycode2/p/10901994.html
Copyright © 2020-2023  润新知