dotjs学习使用

news2024/10/23 10:26:01

数据插入

{{= }} for interpolation  //插入

案例

<!DOCTYPE html>
<html lang="zh">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>dot.js学习</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/dot/1.1.3/doT.js"></script>
</head>

<body>
    <div id="interpolationt"></div>
    <script id="interpolationtmpl" type="text/x-dot-template">
        <div>Hi {{=it.name}}!</div>
        <div>{{=it.age || ''}}</div>
    </script>
    <script>
        var dataInter = { "name": "Jake", "age": 31 };
        // console.log(document.getElementById('interpolationtmpl').innerHTML);
        // console.log(document.getElementById('interpolationtmpl').innerText);
        // console.log(document.getElementById('interpolationtmpl').textContent);
        var interText = doT.template(document.getElementById('interpolationtmpl').innerHTML);
        document.querySelector("#interpolationt").innerHTML = interText(dataInter);
    </script>
</body>

</html>

在这里插入图片描述

求值

{{ }} for evaluation  //求值

案例

<!DOCTYPE html>
<html lang="zh">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>dot.js学习</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/dot/1.1.3/doT.js"></script>
</head>

<body>
    <div id="evaluation"></div>
    <script id="evaluationtmpl" type="text/x-dot-template">
        {{ for(var prop in it) { }}
            <div>KEY:{{= prop }}---VALUE:{{= it[prop] }}</div>
        {{ } }}
    </script>
    <script>
        var dataEval = {
            "name": "Jake", "age": 31, "interests": ["basketball", "hockey", "photography"],
            "contact": { "email": "jake@xyz.com", "phone": "999999999" }
        };
        var evalText = doT.template(document.getElementById('evaluationtmpl').innerHTML);
        document.querySelector("#evaluation").innerHTML = evalText(dataEval);
    </script>
</body>

</html>

在这里插入图片描述

数组循环迭代

{{~ }} for array iteration //数组循环迭代

案例

<!DOCTYPE html>
<html lang="zh">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>dot.js学习</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/dot/1.1.3/doT.js"></script>
</head>

<body>
    <div id="arrays"></div>
    <script id="arraystmpl" type="text/x-dot-template">
        {{~it.array:value:index}}
            <div>{{= index+1 }}{{= value }}!</div>
        {{~}}
    </script>

    <script>
        var dataArr = { "array": ["banana", "apple", "orange"] };
        var arrText = doT.template(document.getElementById('arraystmpl').innerHTML);
        document.querySelector("#arrays").innerHTML = arrText(dataArr);
    </script>
</body>

</html>

在这里插入图片描述

条件表达式

{{? }} for conditionals 条件

{{? }} if
{{?? 表达式}} else if
{{??}} else

案例

<!DOCTYPE html>
<html lang="zh">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>dot.js学习</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/dot/1.1.3/doT.js"></script>
</head>

<body>
    <div id="condition"></div>

    <script id="conditionstmpl" type="text/x-dot-template">
        {{? !it.name }}
        <div>Oh, I love your name, {{=it.name}}!</div>
        {{?? !it.age === 0}}
        <div>Guess nobody named you yet!</div>
        {{??}}
        You are {{=it.age}} and still dont have a name?
        {{?}}
    </script>

    <script>
        var conditionData = { "name": "Jake", "age": 31 };
        var ConditionText = doT.template(document.getElementById('conditionstmpl').innerHTML);
        document.querySelector("#condition").innerHTML = ConditionText(conditionData);
        //相当于if elseif else
    </script>
</body>

</html>

在这里插入图片描述

编码

{{! }} for interpolation with encoding //编码

案例

<!DOCTYPE html>
<html lang="zh">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>dot.js学习</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/dot/1.1.3/doT.js"></script>
</head>

<body>
    <div id="encode"></div>

    <script id="encodetmpl" type="text/x-dot-template">
        Visit {{!it.uri}} {{!it.html}}
    </script>

    <script>
        var dataEncode = {
            "uri": "http://jq22.com/?keywords=Yoga",
            "html": "<div style='background: #f00; height: 30px; line-height: 30px;'>html元素</div>"
        };
        var EncodeText = doT.template(document.getElementById('encodetmpl').innerHTML);
        document.querySelector("#encode").innerHTML = EncodeText(dataEncode);
    </script>
</body>

</html>

在这里插入图片描述

用于编译时评估/包含和部分

{{# }} for compile-time evaluation/includes and partials //编译时解析
{{## #}} for compile-time defines //编译时定义

案例

<!DOCTYPE html>
<html lang="zh">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>dot.js学习</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/dot/1.1.3/doT.js"></script>
</head>

<body>
    <div id="part"></div>

    <script id="parttmpl" type="text/x-dot-template">
        <!--定义-->
        {{##def.snippet:
        <div>{{=it.name}}</div>
        <!--使用对象中定义的模板-->
        {{#def.joke}}
        #}}
        <!--使用模板-->
        {{#def.snippet}}
        <!--渲染-->
        {{=it.html}}
    </script>

    <script>
        var dataPart = { "name": "Jake", "age": 31, "html": "<div style='background: #f00; height: 30px; line-height: 30px;'>html元素</div>" };
        var defPart = { "joke": "<div>{{=it.name}} who?</div>" };
        var partText = doT.template(document.getElementById('parttmpl').innerHTML, undefined, defPart);
        document.querySelector("#part").innerHTML = partText(dataPart);
    </script>
</body>

</html>

在这里插入图片描述
在这里插入图片描述

参考

https://www.jianshu.com/p/7e10eee175d4
官方文档
源代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2213284.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

无人机之三维航迹规划篇

一、基本原理 飞行环境建模&#xff1a;在三维航迹规划中&#xff0c;首先需要对飞行环境进行建模。这包括对地形、障碍物、气象等因素进行准确的测量和分析&#xff0c;以获得可行的飞行路径。 飞行任务需求分析&#xff1a;根据无人机的任务需求&#xff0c;确定航迹规划的…

电力电子技术(四)

单相可控整流电路&#xff1a;&#xff08;包括单相半波整流和单相桥式整流&#xff09; &#xff08;一&#xff09;单相半波整流&#xff1a; 1.1阻性负载&#xff1a; 晶闸管导通条件&#xff1a;1.阳极承受正向电压 2.门极具有触发信号 这里的触发延迟角的定义要注意记…

Go语言中的函数:简单有趣的代码块魔法(五)

Go语言中的函数&#xff1a;简单有趣的代码块魔法 Go语言中的函数不仅简单易用&#xff0c;还带有一些有趣的小魔法&#xff0c;让它在代码世界里游刃有余。本文将带你通俗易懂地理解Go函数的声明与调用、多返回值、命名返回值、可变参数、匿名函数与闭包&#xff0c;以及函数作…

mac地址漂移实验

MAC地址漂移是指交换机的MAC地址表中的内容被改变&#xff0c;导致网络中的数据包无法正确传输到目标设备。在正常情况下&#xff0c;网络中的MAC地址应该是稳定的&#xff0c;不会频繁发生变化。因此&#xff0c;如果在短时间内出现大量MAC地址漂移的情况&#xff0c;可能意味…

【Web——HTML 初阶】网页设计标题

♥HTML&#xff08;HyperText Markup Language&#xff0c;超文本标记语言&#xff09;是构建网页和Web应用的基础语言之一。它不是一种编程语言&#xff0c;而是一种标记语言&#xff0c;用于描述网页的结构和内容。HTML使用标签&#xff08;tags&#xff09;来标记不同类型的…

NFTScan | 10.07~10.13 NFT 市场热点汇总

欢迎来到由 NFT 基础设施 NFTScan 出品的 NFT 生态热点事件每周汇总。 周期&#xff1a;2024.10.07~ 2024.10.13 NFT Hot News ​01/ 数据&#xff1a;9 月份加密市场大多数指标均出现下降&#xff0c;链上总交易量下降 13% 10 月 7 日&#xff0c;据 The Block 研究总监 la…

阿里云ACP好考吗?阿里云ACP备考攻略及工具一站式备齐!

经常有小伙伴问&#xff1a;阿里云ACP好考吗&#xff1f;阿里云ACP难吗&#xff1f;作为过来人&#xff0c;给大家做好了阿里云ACP认证的整体规划&#xff0c;你只需要跟着做就okk啦&#xff01;再告诉大家一个好消息&#xff1a;目前阿里云ACP还是不用做实验的&#xff01; 一…

如何在算家云搭建Video-Infinity(视频生成)

一、模型介绍 Video-Infinity是一个先进的视频生成模型&#xff0c;使用多个 GPU 快速生成长视频&#xff0c;无需额外训练。它能够基于用户提供的文本或图片提示&#xff0c;创造出高质量、多样化的视频内容。 二、模型搭建流程 1.大模型 Video-Infinity 一键使用 基础环境…

深圳出手!新能源汽车被针对了

文 | AUTO芯球 作者 | 雷慢 这个政策好啊&#xff0c;我举双手赞成&#xff01; 来看&#xff0c;深圳刚发布了针对新能源车地下车库充电的管理规范&#xff0c; 我替你们扒了一遍&#xff0c;要点就几个&#xff0c; 新能源充电桩不能设在地下四层及以下&#xff0c; 这点…

产品图册转换为电子图册

​标传统的产品图册不仅体积庞大&#xff0c;携带不便&#xff0c;而且更新换代速度慢&#xff0c;信息更新不及时。在这个信息化时代&#xff0c;我们需要一种更加便捷、高效的方式来展示产品。那么&#xff0c;可翻页的电子画册怎么制作呢&#xff1f; 1.要制作电子杂志,首先…

“全民拼团:解锁社交电商新玩法,乐享购物与分红“

在当前电子商务领域&#xff0c;一种创新的购物体验——全民团购风潮正逐渐兴起。它创造性地将社交功能与电商购物相结合&#xff0c;借助团购、拼购等活动&#xff0c;不仅使消费者能够享受到更优惠的价格&#xff0c;更赋予购物过程一种全新的乐趣和互动性。 全民团购模式的独…

史诗级回归,连播两集,燃到让人窒息

《超人和露易丝》自2021年首播以来&#xff0c;虽然起初没有掀起太大的波澜&#xff0c;但凭借着温情的家庭故事与用心的制作&#xff0c;慢慢积累了口碑。它不再是简单的“英雄拯救世界”套路&#xff0c;而是把超人的身份放进了家庭的框架里&#xff0c;展现了英雄在拯救世界…

模板的路由的配置

1.安装路由 pnpm install vue-router 2.配置相应的路由 routes.ts //对外暴露这些配置的路由(常量路由)export const constantRoutes [{path: /login,name: login,//命名路由 权限用到component: () > import(/views/login/LoginPage.vue)},{path: /,name: layout,compo…

【Java数据结构】---七大排序(插入排序和选择排序)

乐观学习&#xff0c;乐观生活&#xff0c;才能不断前进啊&#xff01;&#xff01;&#xff01; 我的主页&#xff1a;optimistic_chen 我的专栏&#xff1a;c语言 &#xff0c;Java 欢迎大家访问~ 创作不易&#xff0c;大佬们点赞鼓励下吧~ 什么是排序&#xff1f; 使一串数据…

新的一轮前端面试已来临,避坑指南来 get!

最近看到很多人都在投简历&#xff0c;可是很多人对待面试不够认真&#xff0c;只会等待结果&#xff0c;不去努力。所以整理一些懒人面试技巧给大家。 我们说说目前应用面积最广的 Vue&#xff0c;大厂或是高级工程师面试的时候究竟会碰到什么棘手或是难缠的 Vue 的面试题呢&a…

数据结构:LRU Cache

数据结构&#xff1a;LRU Cache LRU Cache实现类架构setget测试 总代码 LRU Cache cache意为缓存&#xff0c;硬件层面指CPU与主存之间的缓存&#xff0c;用于减缓两者之间的速度差距。广义上&#xff0c;可以把cache简单理解为一个临时存储区域。 cache的容量是非常有限的&a…

从0到1掌握大模型

人人都看得懂的大模型简介 大模型就像一座庞大的图书馆&#xff0c;里面有非常多的书籍。但与普通图书馆不同的是&#xff0c;这座图书馆中的每本书都是关于不同事物的描述和知识。而这些书籍中的每一页都代表了这个事物的一些特征或细节。现在&#xff0c;想象一下&#xff0…

前端文件流导出

1、前端代码 ​ /** 导出 */ const handleExport async () > {let config {responseType: blob,headers: {Content-Type: application/json,},};const res await getTargetExport(config);const blob new Blob([res]);const fileName PK目标跟进导出列表.xls;const li…

基于Python绘制一个三角形

一、程序 import turtledef draw_triangle(side_length):# 初始化turtle对象并设置速度my_turtle turtle.Turtle()my_turtle.speed(1)# 绘制三角形for _ in range(3):my_turtle.forward(side_length)my_turtle.left(120)# 结束后关闭窗口防止立即退出turtle.done()# 设定三角…

前端面试经验总结1(简历篇)

本文分为3部分&#xff0c;分别为第一部分简历篇&#xff0c;第二部分经典问题篇以及第三部分知识体系篇&#xff0c;都是个人面试经验及同行面试经验总结和整理。 我对于简历的理解是这样的&#xff0c;简历的作用是让看简历的人能够快速、准确地捕捉到有用信息&#xff1a; 你…