【Javascript】用 js 写一个模板引擎

告别懵圈!用CANoe 5640手把手带你跑通SomeIP TC8测试(附脚本思路) 本文详细解析了基于CANoe 5640的SomeIP TC8测试全流程,从环境搭建到结果分析,特别针对车载以太网测试中的SomeIP协议测试难点提供实战指南。通过典型测试用例SOMEIP_TEST_61,手把手教你配置CANoe工程、编写CAPL脚本,并解决常见问题,助力开发者高效完成协议验证。 阅读详情

⭐️ 本文首发自 前端修罗场(点击加入),是一个由 资深开发者 独立运行 的专业技术社区,我专注 Web 技术、Web3、区块链、答疑解惑、面试辅导以及职业发展。博主创作的 《前端面试复习笔记》(点击订阅),广受好评,已帮助多人提升实力、拿到 offer。现在订阅,私聊我即可获取一次免费的模拟面试机会,帮你评估知识点的掌握程度,获得更全面的学习指导意见!

模板引擎在前后端都能用到,但是通过作为前端,我们只需要一些简单的模板引擎。

先上代码:

<!DOCTYPE html>
<html>
<head>
	<title>模板引擎</title>
</head>
<body>
	<div id="tpl" type="text/plain">
	    <p>Today: { date }</p>
	    <a href="/{ user.id|safe }">{ user.company }</a>
	</div>
	<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
	<script type="text/javascript">
		var tpl = new Template($('#tpl').html());
		var date= new Date();
		var model = tpl.render({
		    date: date,
		    user: {
		        id: '0000',
		        company: 'babybus'
		    }
		});
		$('#tpl').html(model);
		function Template(tpl) {
		    var
		        fn,
		        match,
		        code = ['var r=[];\nvar _html = function (str) { return str.replace(/&/g, \'&amp;\').replace(/"/g, \'&quot;\').replace(/\'/g, \'&#39;\').replace(/</g, \'&lt;\').replace(/>/g, \'&gt;\'); };'],
		        re = /\{\s*([a-zA-Z\.\_0-9()]+)(\s*\|\s*safe)?\s*\}/m,
		        addLine = function (text) {
		            code.push('r.push(\'' + text.replace(/\'/g, '\\\'').replace(/\n/g, '\\n').replace(/\r/g, '\\r') + '\');');
		        };
		    while (match = re.exec(tpl)) {
		        if (match.index > 0) {
		            addLine(tpl.slice(0, match.index));
		        }
		        if (match[2]) {
		            code.push('r.push(String(this.' + match[1] + '));');
		        }
		        else {
		            code.push('r.push(_html(String(this.' + match[1] + ')));');
		        }
		        tpl = tpl.substring(match.index + match[0].length);
		    }
		    addLine(tpl);
		    code.push('return r.join(\'\');');
		    fn = new Function(code.join('\n'));
		    this.render = function (model) {
		        return fn.apply(model);
		    };
		}
	</script>

</body>
</html>

这个我们能用这个模板引擎创建一个我们前端需要的html片段了。

这里面我们使用正则表达式去匹配字符串中的变量,当然,你要对js正则表达式熟练应用。

【WorkBuddy专栏】完结篇暨付费专栏总目录(内容继续更新中) 【WorkBuddy专栏】完结篇和付费内容总目录 阅读详情

相关推荐

用VFP计算 CRC-16 Modbus 校验位

1. Modbus是一种串行通信协议,最初由Modicon(目前属于施耐德电气公司)于1979年开发2. Modbus协议是应用在Modicon产品上的,后来才被移植到其他产品上3. Modbus协议的通信接口可以有多种选择,如RS232、RS485、以太网等。

lddnzx的博客 518

JavaScript模板引擎Template.js基本使用详解

template.js是一款JavaScript模板引擎,提供一套模板语法,简单好用,开发者可以写一个模板区块,每次传入的数据,生成对应数据产生的HTML片段,渲染不同的效果。先使用jquery的get方法获取模板页,然后再利用template.compile()获取渲染内容,然后将数据obj渲染进去,最后添加到页面里即可。注意:这时候就不能使用template()方法进行模板替换了,必须使用template.compile()及render()进行模板替换才行。2.第二种使用方法(引用模板)

slongzhang的博客 4110

在树莓派5(8G版)上运行Ollama + LLM

直接上结论,Ollama在树莓派上能安装,且本身运行起来毫无压力,但具体到大语言模型,Deepseek似乎不总是最佳选择。

ki1381的专栏 1648

JavaScript模板引擎详解

JavaScript模板引擎是一种用于生成HTML、XML和其他文本格式的工具,它将特定的模板语法转换为相应的文本输出,通常用于前端开发中动态生成页面内容。Handlebars支持条件语句、循环语句、分部模板等功能,具有易用性和扩展性,是最受欢迎的JavaScript模板引擎之一。Mustache是一个轻量级的JavaScript模板引擎,它具有良好的可读性和可扩展性,支持逻辑语句、部分模板和自定义分隔符等功能。其中,templateString表示模板文件的字符串内容,data是一个包含模板数据的对象。

m0_75198698的博客 1896

WS2812呼吸灯效果实战:用STM32的PWM+DMA实现流畅渐变(附完整代码)

本文详细介绍了如何使用STM32的PWM+DMA技术实现WS2812呼吸灯效果,提供完整的代码示例和调试技巧。通过PWM波形编码和DMA传输机制,解决了传统IO模拟控制方式的高CPU占用问题,实现了流畅的LED渐变效果,适用于各种嵌入式开发场景。

weixin_30566063的博客 452

Kindle电子书DRM破解全攻略:从下载到转换的完整流程(含最新DeDRM插件配置)

本文详细介绍了如何合法移除个人购买的Kindle电子书的DRM保护,实现跨设备阅读与备份。核心内容包括使用最新DeDRM插件(如noDRM分支)配合Calibre进行配置,并针对亚马逊最新的KFX加密格式提供了密钥提取与实战操作指南。文章强调该方法仅适用于个人合理使用,旨在帮助读者真正掌控自己的数字资产。

delta的博客 574

js中模板字符串的用法`${变量}`

JS模板字符串是一种特殊的字符串,它允许在字符串中嵌入表达式,并且可以跨越多行。模板字符串使用反引号(`)来定义。

小墨蛇的博客 2493

47_AI智能体核心业务之全局主控Agent:智能对话系统的统一指挥中心

本文介绍了全局主控Agent的架构设计与实现,该组件作为智能对话系统的统一指挥中心,提供标准化的多模式处理接口。系统支持普通对话、工具命令执行和流式响应三种处理模式,通过智能工作流路由协调多个处理引擎。统一的消息封装和异步架构设计确保了系统的高性能和可扩展性,已成功处理300万次用户请求,平均响应时间1.2秒。

在科技的浪潮中,我们寻找着创新的火种,在代码的海洋里,我们编织着智慧的网。腾飞开源,就是这样一个由技术精英汇聚而成的博客平台,我们致力于分享在Java、Python、IoT和人工智能等领域的最新研究成果和实战经验。 在腾飞开源的博客上,你会看到紧跟技术前 338

js中的设计模式之模板方法模式

定义操作执行中方法的骨架,使所有子类按照定义好的步骤执行,但是具体执行的细节放在子类中实现的一种模式。

前端三脚猫的博客 708

YOLO26 魔术师专栏|全网独家首发!2026 原创级创新赋能 CV 全场景

基于 YOLO26 核心架构迭代,融合原创自研、2026 AAAI/CVPR/ICCV 顶会前沿成果,打造更高效、更灵活、更具创新性的计算机视觉解决方案!

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 4356

复现:Mamba-UNet:降水临近预报的创新解决方案

Mamba-UNet通过其创新的双分支Mamba融合模块、多尺度时空注意力模块和动态分位数加权损失函数,在降水临近预报领域取得了显著的性能提升。它不仅在多种降水场景下表现出色,尤其在预测强降水事件方面展现出了强大的能力。这一创新模型为降水临近预报提供了一种新的解决方案,有望在未来的研究和应用中发挥更大的作用,为应对气候变化带来的挑战提供有力支持。随着技术的不断发展和优化,我们期待Mamba-UNet在更广泛的气象预报任务中发挥更大的价值,为各行各业提供更精准、更可靠的降水预报服务。

hanfeng5268的博客 912

NodeJs之模板引擎及综合案例

【代码】NodeJs之模板引擎及综合案例。

十三阿哥的博客 1429

【报错】ImportError: libpython3.10.so.1.0: cannot open shared object file: No such file or directory

ImportError: libpython3.10.so.1.0: cannot open shared object file: No such file or directory

静谧、淡雅 859

原生js实现类似于html模板引擎,教你使用javascript简单写一个页面模板引擎

于是我又想着能不能写一些简单的代码来完善这个模板引擎,又能与其它现有的逻辑协同工作。AbsurdJS本身主要是以NodeJS的模块的形式发布的,不过它也会发布客户端版本。考虑到这些,我就不能直接使用现有的引擎了,因为它们大部分都是在NodeJS上运行的,而不能跑在浏览器上。我需要的是一个小巧的,纯粹以Javascript编写的东西,能够直接运行在浏览器上。当我某天偶然发现John Resig的这篇...

weixin_39613839的博客 728

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

只有20行Javascript代码!手把手教你写一个页面模板引擎

原文链接:http://web.jobbole.com/56689/ AbsurdJS 作者写的一篇教程,一步步教你怎样用 Javascript 实现一个纯客户端的模板引擎。整个引擎实现只有不到 20 行代码。如果你能从头看到尾的话,还能有不少收获的。你甚至可以跟随大牛的脚步也自己动手写一个引擎。以下是全文。 不知道你有木有听说过一个基于Javascript的Web页面预处理器,叫

1701

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

EJS 模板中,不能直接写纯 JavaScript 代码而不使用 <% ... %> 或 <%= ... %> 等标签

姓名:<%= name %></p><p>姓名:<%= name %>

bycfmz的博客 198

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

php写的js引擎,简易js模板引擎写法

前面js 模板引擎有很多很多,我以前经常用 art-template ,有时候也会拿 vue 来当模板引擎用。直到......年初的时候,我还在上个项目组,那时候代码规范是未经允许不能使用 【外部代码】,囧 。有了需求,那么就去写吧,但是后来因为一些原因没用上。后来分了产线,自己搭了一套构建,用了几个月感觉挺爽,把这小段代码按照比较大众的规范重写,跟大家分享下。https://github.com...

weixin_42297742的博客 262

用js写一个模板引擎

模板引擎在前后端都能用到,但是通过作为前端,我们只需要一些简单的模板引擎。 先上代码: html> head> title>模板引擎title> head> body> div id="tpl" type="text/plain"> p>Today: { date }p> a href="/{ user.id|safe }">{ user.

xyjikl 371

Javascript:自己写模板引擎

背景 因为JS没有提供“字符串插入”和“多行字符串”特性,传统的拼凑字符串容易出错、性能不高和不容易理解代码,为了应对这些问题,很多个人和团队开发了模板引擎,现在主流的JS框架几乎都提供此类功能了。 模板引擎的实现方式有很多种,此处介绍一种简单、灵活和强大的思路,该方式借鉴了 JSP(web 服务器最终将 JSP 页面转换为了 Servlet),编译后会把模板转换为一个方法。 这个实现只是为...

weixin_30566111的博客 62

js模板引擎原理,附自己写的简洁模板引擎

js处理DOM交互非常普遍,但DOM结构单纯用js字符串拼接简直难以维护,不方便理解和扩展。 下面展现了js模板引擎的实现原理: html中的模板 <script id="mytpl"> <div> 我的名字是:$name$ <br/> 今年$age$了! </div> </scri...

weixin_30340353的博客 132

不用正则表达式,用javascript从零写一个模板引擎(一)

前言模板引擎的作用就是将模板渲染成html,html = render(template,data),常见的js模板引擎有Pug,Nunjucks,Mustache等。网上一些制作模板引擎的文章大部分是用正则表达式做一些hack工作,看完能收获的东西很少。本文将使用编译原理那套理论来打造自己的模板引擎。之前玩过一年Django,还是偏爱那套模板引擎,这次就打算自己用js写一个,就叫jstemp 预...

weixin_33712881的博客 284

【自写】node.js模板引擎的选择?

1  著作权归作者所有。 商业转载请联系作者获得授权,非商业转载请注明出处。 作者:尤雨溪 链接:https://www.zhihu.com/question/23412387/answer/24502692 来源:知乎 doT,速度很快,支持嵌入 js, 但问题是没有继承,也不支持 filter(只能在数据对象里定义一些函数来实现这样的功能,个人不喜欢这样的做法)。 而

Summersblue的博客 582

写了一个最简单的 js 模板引擎,直接贴代码

test {{ for(var i in data.users){ var user=data.users[i]; }} {{r+=user.user;}} {{ } }} var data={users:[{user:'wym'},{user:'xjm'}]}; var tp

buyulian的博客 652

只有15行Javascript代码!手把手教你写一个页面模板引擎

本文由 伯乐在线 - njuyz 翻译自 Tech.pro。欢迎加入技术翻译小组。转载请参见文章末尾处的要求。 【伯乐在线导读】:AbsurdJS 作者写的一篇教程,一步步教你怎样用 Javascript 实现一个纯客户端的模板引擎。整个引擎实现只有不到 20 行代码。如果你能从头看到尾的话,还能有不少收获的。你甚至可以跟随大牛的脚步也自己动手写一个引擎。以下是全文。 不知道你有木

259
上一篇: 【缓存】HTML5缓存的那些事
下一篇: 【Javascript】闭包之块级作用域
蟹蟹蟹风流
蟹蟹蟹风流 优质创作者: 编程框架技术领域 优质创作者: 编程框架技术领域 领域专家: 前端开发技术领域 领域专家: 前端开发技术领域
博客等级 码龄11年 3万+粉丝 396原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蟹蟹蟹风流

期望和你分享一杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值