js使用text/template制作模板

news/2024/9/22 22:08:39/

如果你想把模板内容放在HTML文件中,并通过JavaScript加载和渲染这些模板,你可以采用以下几种方法:

1. 使用 <script> 标签作为模板容器

可以使用 <script> 标签来存储模板内容,并设置 type 属性为一个特殊的值(如 text/template),这样浏览器就不会尝试执行这些脚本。

<script id="myTemplate" type="text/template">javascript"><div><h1>{{title}}</h1><p>{{content}}</p></div>
</script>

然后在JavaScript中获取这个模板的内容:

javascript">function loadTemplate(id) {return document.getElementById(id).innerHTML;
}const template = loadTemplate('myTemplate');

2. 使用外部文件

你也可以将模板保存在一个单独的HTML文件中,然后通过Ajax请求加载它。

<!-- index.html -->
<button onclick="javascript language-javascript">loadAndRender()">Load Template</button><script>javascript">
async function loadAndRender() {const response = await fetch('template.html');const template = await response.text();// 假设我们有一个数据对象const data = {title: 'Welcome',content: 'This is some content.'};const rendered = renderTemplate(template, data);document.body.appendChild(createElementFromHTML(rendered));
}function renderTemplate(template, data) {const regex = /\{\{(.+?)\}\}/g;return template.replace(regex, (match, expression) => {try {return eval(expression);} catch (e) {return '';}});
}function createElementFromHTML(htmlString) {const div = document.createElement('div');div.innerHTML = htmlString.trim();return div.firstChild;
}
</script>

示例代码

这里是一个完整的示例,使用了 <script> 标签来存储模板,并且在JavaScript中进行加载和渲染:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Template Engine Example</title>
</head>
<body><button onclick="javascript language-javascript">loadAndRender()">Load Template</button><script id="myTemplate" type="text/template">javascript"><div><h1>{{title}}</h1><p>{{content}}</p></div></script><script>javascript">function loadTemplate(id) {return document.getElementById(id).innerHTML;}function renderTemplate(template, data) {const regex = /\{\{(.+?)\}\}/g;return template.replace(regex, (match, expression) => {try {return data[expression];} catch (e) {return '';}});}function createElementFromHTML(htmlString) {const div = document.createElement('div');div.innerHTML = htmlString.trim();return div.firstChild;}function loadAndRender() {const template = loadTemplate('myTemplate');const data = {title: 'Welcome to our site!',content: 'This is the main content of the page.'};const rendered = renderTemplate(template, data);document.body.appendChild(createElementFromHTML(rendered));}</script>
</body>
</html>

http://www.ppmy.cn/news/1511164.html

相关文章

Pytorch中transform的应用

在PyTorch中&#xff0c;transforms模块主要用于对图像进行预处理和数据增强&#xff0c;以便于训练深度学习模型。这些转换操作可以包括裁剪、缩放、旋转、翻转等&#xff0c;以及对图像进行标准化处理。下面将详细介绍一些常用的transforms操作及其应用。 1. 常用的transfor…

《AI视频类工具之十七——​ Fliki.ai》

一.简介 官网:https://fliki.ai/ Fliki.ai 是一个在线视频制作平台,它提供了一系列的功能来帮助用户快速创建专业级别的视频内容。 二.功能介绍 1、免费使用: Fliki.ai 是一个免费的在线视频制作工具,用户可以免费访问其基本功能。2、丰富的模板: 平台提供了多种视频模…

Operator 运算符 || 可调用对象

运算符重载 重载&#xff1a;在同一个作用域内定义多个同名函数&#xff0c;这些函数具有不同的参数列表或函数体。泛型&#xff1a;允许编写代码时不指定具体的数据类型重载运算符&#xff0c;可以重新定义运算符的行为几元运算符&#xff1a;包含几个运算对象&#xff0c;重…

FFmpeg源码:av_log2函数分析

一、av_log2函数的声明 av_log2函数声明在FFmpeg源码&#xff08;本文演示用的FFmpeg源码版本为7.0.1&#xff09;的头文件libavutil/common.h中&#xff1a; #ifndef av_log2 av_const int av_log2(unsigned v); #endif 该函数作用是&#xff1a;求形参v是2的多少次幂&#…

record 关键字

public record GetTemplateSettingsRequest(string SubjectUuid, SubjectType SubjectType) : IRequest<TemplateSettingsVO>; 使用了 C# 9 引入的新特性 record 来定义一个不可变的数据结构。以下是对这行代码的详细解释&#xff1a; 1. record 关键字 record 是 C# …

基于微信小程序地图实现点位标注、覆盖物、地图聊天

目录 小程序部分map标签的使用获取用户经纬度并转换地址地图点击事件覆盖物标注点击并实现弹窗交互数据库及接口部分数据库表结构设计API搭建小程序接口使用注意事项wx.getLocation深入控制地图小程序部分 map标签的使用 创建小程序的步骤这里不再重复赘述,在wxml页面中放一个…

【经典算法】BFS_最短路问题

目录 1. 最短路问题介绍2. 算法原理和代码实现(含题目链接)1926.迷宫中离入口最近的出口433.最小基因变化127.单词接龙675.为高尔夫比赛砍树 3. 算法总结 1. 最短路问题介绍 最短路径问题是图论中的一类十分重要的问题。本篇文章只介绍边权为1(或边权相同)的最简单的最短路径问…

TinyWebserver的复现与改进(6):定时器处理非活动连接

如果客户端长时间没有动作&#xff0c;会占用了许多连接资源&#xff0c;严重影响服务器的性能。因此需要通过实现一个服务器定时器&#xff0c;处理这种非活跃连接&#xff0c;释放连接资源。 定时器处理流程 SIGALARM触发&#xff1a;整个流程开始于一个 SIGALARM 信号&…