用模版生成HTML的框架jquery.tmpl使用详解

胖杰吖_1369

胖杰吖_1369

2016-12-19

1924人浏览

原创

动态请求数据来更新页面是现在非常常用的方法,比如博客评论的分页动态加载,微博的滚动加载和定时请求加载等。

这些情况下,动态请求返回的数据一般不是已拼好的 HTML 就是 JSON 或 XML,总之不在浏览器端拼数据就在服务器端拼数据。不过,从传输量方面来看,返回 HTML 不划算,而在 web 传输方面,现在更多的是使用 JSON 而不是 XML。

浏览器端根据 JSON 生成 HTML 有个很苦恼的地方就是,结构不复杂的时候还好,结构一复杂,就想死了,需要很小心很小心地写出几乎无法维护的 JavaScript 代码。

因此一些用模版生成HTML的的框架相继出现jquery.tmpl 就是其中的一种,下面我们来详细介绍下jquery.tmpl的用法

下面重点介绍一下使用方法:

首先介绍一下  模板和数据,不用说这两个肯定是不可缺少的

模板有两种定义方法,下面给出具体code

var markup = "
  • Some content: ${item}.
    "  + " More content: ${myValue}.
  • "; $.template( "movieTemplate", markup );
    <script> 
    <li><b>${Name} (${ReleaseYear}) 
    </script>

    这样就定义了两种模板,前一种写到script里边,后边一种写到html里边

    数据用json

    下面开始渲染模板

    $( "#movieTemplate" ).tmpl( movies ).appendTo( "#movieList" );
    $.tmpl( "movieTemplate", movies ).appendTo( "#movieList" );

    注意:movies是json数据数组

    var movies = [ 
    { Name: "The Red Violin", ReleaseYear: "1998" }, 
    { Name: "Eyes Wide Shut", ReleaseYear: "1999" }, 
    { Name: "The Inheritance", ReleaseYear: "1976" } 
    ];

    jquery.tmpl的几种常用标签分别有:

    ${}, {{each}}, {{if}}, {{else}}, {{html}}

    不常用标签

     {{=}},{{tmpl}} and {{wrap}}.

    ${}等同与{{=}}是输出变量 ${}里面还可以放表达式 (=和变量之间一定要有空格,否则无效)

    示例:

    PDFlux
    PDFlux

    PDFlux是一款用于复杂 PDF 数据抽取、识别和格式转换的 AI 文档处理工具。

    下载
    <div>
    </div>
    <script>
        <div style="margin-bottom:10px;">
          <span>${ID}
          <span style="margin-left:10px;">{{= Name}}
          <span style="margin-left:10px;">${Number(Num)+1}
          <span style="margin-left:10px;">${Status}
        
    </script><script>
      var users = [{ ID: 'think8848', Name: 'Joseph Chan', Num: '1', Status: 1 }, { ID: 'aCloud', Name: 'Mary Cheung', Num: '2'}];
      $("#demo").tmpl(users).appendTo('#div_demo');
    </script>

    {{each}} 提供循环逻辑,$value访问迭代变量 也可以自定义迭代变量(i,value)

    示例:

    <div>
    </div>
    <script> 
        <h3>users
        {{each(i,user) users}}
            <div>${i+1}:{{= user.name}}
            {{if i==0}}
                <h4>group
                {{each(j,group) groups}}
                    <div>${group.name}
                {{/each}}
            {{/if}}
        {{/each}}
        <h3>depart
        {{each departs}}
            <div>{{= $value.name}}
        {{/each}}
    </script> 
    <script>
      var eachData = { users: [{ name: 'jerry' }, { name: 'john'}], groups: [{ name: 'mingdao' }, { name: 'meihua' }, { name: 'test'}], departs: [{ name: 'IT'}] };
      $("#each").tmpl(eachData).appendTo('#div_each');
    </script>

    {{if }} {{else}}提供了分支逻辑 {{else}} 相当于else if

    示例:

    <div></div>
    <script> 
        <div style="margin-bottom:10px;"><span>${ID}<span style="margin-left:10px;">{{= Name}}
            {{if Status}}
                <span>Status${Status}
            {{else App}}
                <span>App${App}
            {{else}}
                <span>None
            {{/if}}
        
    </script> 
    <script>
      var users = [{ ID: 'think8848', Name: 'Joseph Chan', Status: 1, App: 0 }, { ID: 'aCloud', Name: 'Mary Cheung', App: 1 }, { ID: 'bMingdao', Name: 'Jerry Jin'}];
        $("#ifelse").tmpl(users).appendTo('#div_ifelse');
    </script>

    {{html}} 输出变量html,但是没有html编码,适合输出html代码

     实例

    <div></div>
    <script> 
        <div style="margin-bottom:10px;">
        <span>${ID}
        <span style="margin-left:10px;">{{= Name}}
          ${html}
          {{html html}}
        
    </script> 
    <script>
      var user = { ID: 'think8848', Name: 'Joseph Chan', html: '<button>html' };
       $("#html").tmpl(user).appendTo('#div_html');
    </script>

    {{tmpl}} 嵌套模版

    实例

    <div></div>
    <script>
        <div style="margin-bottom:10px;">
          <span>${ID}
          <span style="margin-left:10px;">{{tmpl($data) '#tmpl2'}}
             
    </script><script>
        {{each Name}}${$value}  {{/each}}   
    </script><script>
      var users = [{ ID: 'think8848', Name: ['Joseph', 'Chan'] }, { ID: 'aCloud', Name: ['Mary', 'Cheung']}];
       $("#tmpl1").tmpl(users).appendTo('#tmpl');
    </script>

    {{wrap}},包装器

    实例

    <div>
        </div>
    <script>
        The following wraps and reorders some HTML content:
        {{wrap "#tableWrapper"}}
            <h3>One
            <div>
                First <b>content
            
            <h3>Two
            <div>
                And <em>more <b>content...
            
        {{/wrap}}
        </script><script>
        <table cellspacing="0" cellpadding="3" border="1"><tbody>
            <tr>
                {{each $item.html("h3", true)}}
                    <td>
                        ${$value}
                    
                {{/each}}
            
            <tr>
                {{each $item.html("div")}}
                    <td>
                        {{html $value}}
                    
                {{/each}}
            
        
        </script>
     <script>
            $(function () {
                $('#myTmpl').tmpl().appendTo('#wrapDemo');
            });
        </script>

    $data $item $item代表当前的模板;$data代表当前的数据。

     实例:

    <div></div>
    <script> 
         <div style="margin-bottom:10px;">
        <span>${$data.ID}
        <span style="margin-left:10px;">${$item.getName(" ")}
       
    </script> 
    <script>
       var users = [{ ID: 'think8848', Name: ['Joseph', 'Chan'] }, { ID: 'aCloud', Name: ['Mary', 'Cheung']}];
         $("#item_data").tmpl(users,
                    {
                    getName: function (spr) {
                       return this.data.Name.join(spr);
                    }
                    }).appendTo('#div_item_data');
    </script>

     $.tmplItem()方法,使用这个方法,可以获取从render出来的元素上重新获取$item

    实例

    <script>
      $('#demo').delegate('div', 'click', function () {
                    var item = $.tmplItem(this);
                    alert(item.data.Name);
                });
    </script>



    更多用模版生成HTML的框架jquery.tmpl使用详解相关文章请关注PHP中文网!


    前端入门到VUE实战笔记:立即使用
    在学习笔记中,你将探索 前端 的入门与实战技巧!

    相关文章

    HTML速学教程(入门课程)
    HTML速学教程(入门课程)

    HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

    下载

    相关标签:

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

    相关专题

    更多
    Vite 项目如何打包和部署
    Vite 项目如何打包和部署

    Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

    2026.10.28

    60

    16

    Vite 如何搭配 Vue.js
    Vite 如何搭配 Vue.js

    Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。

    2026.10.28

    40

    15

    Vite 项目目录怎么看
    Vite 项目目录怎么看

    Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。

    2026.10.28

    120

    10

    Gradle插件开发入门教程
    Gradle插件开发入门教程

    本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

    2026.10.22

    140

    11

    Gradle Wrapper配置教程
    Gradle Wrapper配置教程

    本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

    2026.10.22

    120

    10

    Golangci-lint检查器使用教程
    Golangci-lint检查器使用教程

    本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

    2026.10.22

    80

    15

    Gradle怎么构建Java项目
    Gradle怎么构建Java项目

    本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

    2026.10.22

    40

    10

    PHP时间戳漏洞修复教程
    PHP时间戳漏洞修复教程

    本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

    2026.10.22

    80

    25

    Golangci-lint配置文件与规则设置
    Golangci-lint配置文件与规则设置

    本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。

    2026.10.22

    40

    15

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    韩顺平 2016年 最新PHP基础视频教程
    韩顺平 2016年 最新PHP基础视频教程

    共47课时 | 12.2万人学习

    jsp在线参考手册
    jsp在线参考手册

    共32课时 | 29万人学习