• handlebars


    • Handlebars 是 JavaScript 一个语义模板库,通过对view和data的分离来快速构建Web模板。它采用"Logic-less template"(无逻辑模版)的思路,在加载时被预编译,而不是到了客户端执行到代码时再去编译, 这样可以保证模板加载和运行的速度。
    • 简单的说就是:Handlebars是一个很好的前后端的分离的方案

    引入:

    代码写在body下的script标签里面,并且id="template",type的类型为type="text/x-handlebars-template"

    记得还要去js中去配置一些东东:

    算了吧,来一篇直接粘贴过去就能拿来用的,以后一号拿来复习再巩固

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>handlebars</title>
      <style>
        .big {
           100px;
          height: 100px;
          border: 1px solid green;
          border-radius: 100px;
          position: relative;
        }
        .small {
           50px;
          height: 50px;
          border: 1px solid green;
          border-radius: 50px;
          position: absolute;
          left: 0;
          right: 0;
          top: 0;
          bottom: 0;
          margin: auto;
          text-align: center;
          line-height: 50px;
        }
      </style>
    </head>
    <body>
      <div id="container"></div>
      <script id="template" type="text/x-handlebars-template">
        <h1>Hello</h1>
        <h2>Handlebars</h2>
        <table border="1">
          <thead>
            <tr>
              <th>姓名</th>
              <th>年龄</th>
              <th>性别</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>{{name}}</td>
              <td>{{age}}</td>
              <td>{{gender}}</td>
            </tr>
          </tbody>
        </table>
        <p>hello, {{name}}</p>
        <p>{{hello}}</p>
        <table border="1">
          <thead>
            <tr>
              <th>姓名</th>
              <th>年龄</th>
              <th>性别</th>
            </tr>
          </thead>
          <tbody>
            {{#each listOfStudents}}
              <tr>
                <td>{{name}}</td>
                <td>{{age}}</td>
                <td>{{gender}}</td>
              </tr>
            {{/each}}
          </tbody>
        </table>
    
        <p>hello, {{{person.a.name}}}</p>
        <p>hello, {{person/a/name}}</p>
    
    
        <div class="big">
          <div class="small">
            2
          </div>
        </div>
        <div class="big">
          <div class="small">
            3
          </div>
        </div>
        <div class="big">
          <div class="small">
            4
          </div>
        </div>
    
        <!-- {{circle name}}
        {{circle name}}
        {{circle name}} -->
      </script>
      <script src="./handlebars-v4.0.5.js"></script>
      <script>
        // 获取模板的源代码
        var source = document.getElementById('template').innerHTML;
        // 把模板的源代码,编译成模板对象
        var template = Handlebars.compile(source);
        // 创建helper
        Handlebars.registerHelper('circle', function(data ) {
          // 告诉系统,这个返回值要解析成真正的标签
          var obj = new Handlebars.SafeString('<div class="big"><div class="small">' + data + '</div></div>');
    
          return obj;
        });
        // 通过模板对象,获取最终html代码
        var html = template({
          person: {
            a: {
              name: 'Tom<input type="text">'
            },
            b: 'hello'
          },
          name: 'Bob',
          age: 20,
          listOfStudents: [
            {
              name: 'bob',
              age: 20,
              gender: 'male'
            },
            {
              name: 'tom',
              age: 22,
              gender: 'male'
            }]
        });
    
        // console.log(html);
        // 把html代码插入到网页中去
        document.getElementById('container').innerHTML = html;
    
        // helper
      </script>
    </body>
    </html>
    

      

  • 相关阅读:
    mysql排行榜sql的实现
    MYSQL 简单的循环存储过程
    Git学习笔记
    LeetCode-树-简单-108-110-111
    Android开发连接mysql云数据库中遇到的的一些问题
    使用mybatis遇到报错Invalid bound statement (not found)
    ajax使用时碰到的一些坑
    关于Echarts的常见报错
    deepin系统桌面图标和菜单栏突然消失
    SOA架构理解
  • 原文地址:https://www.cnblogs.com/zhaowenxin/p/6036842.html
Copyright © 2020-2023  润新知