基于JS正则表达式实现模板数据动态渲染(实现思路详解)


Posted in Javascript onMarch 07, 2020

最近业务上需要动态渲染模板数据,好久没写前端代码了,有点生疏,将思路简单写下来,防老:

一、业务需求:

1.前端后端定义好模板以及变量名,保存数据库

2.订单数据是前端根据支付结果获取的,最终渲染完的数据模板需要调用打印机打印出来

3.模板相对商家来说比较固定,但是每个商家需要的模板都有可能不一样,所以需要每次登录后,查询一次模板缓存前端,后续每次支付后,动态渲染数据即可

二、考点:

1.正则表达式

2.精简代码量,尽量减少前端的工作量​

三、实现思路:

1.需要渲染数据的模板,以${变量名}区分:

var t="银行:${bankName},商家名称:${merchantName},订单号:${orderNum}";

2.正则匹配获取所有变量名

var keys=[];
var arr = t.match(/\$\{(.*?)\}/g);
for(var key in arr){
  var s=arr[key].replace("${","").replace("}","");
  keys.push(s);
}
alert(keys);

3.组装订单数据,注意变量属性名与模板里的变量名要保持一致

var order={
 "bankName": "工行",
 "merchantName": "小卖部",
 "orderNum": "123456"
};

4.渲染数据

for(var i=0;i<keys.length;i++){
 var key=keys[i];
 var value=order[key];
 t= t.replace("${"+key+"}",value);
}
alert(t);

5.查看效果:

基于JS正则表达式实现模板数据动态渲染(实现思路详解)

6.有人会说,直接拼接字符串不是更快?比如:

var t=`银行:${order.bankName},商家名称:${order.merchantName},订单号:${order.orderNum}`;

这种方式在模板固定且数据量少的时候是挺好用的,但是业务上,虽然模板和数据对于商家来说相对固定,但是系统里面很多商家,每个商家的小票模板可能都不一样,需要渲染的变量也挺多,前端不可能根据每个商家都改一套模板的,总而言之,适合才是最好的!

到此这篇关于基于JS正则表达式实现模板数据动态渲染的文章就介绍到这了,更多相关js 正则模板数据内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
jQuery 性能优化指南(3)
May 21 Javascript
再谈javascript 动态添加样式规则 W3C校检
Dec 25 Javascript
jquery动态加载js三种方法实例
Aug 03 Javascript
js模拟hashtable的简单实例
Mar 06 Javascript
禁用Tab键JS代码兼容Firefox和IE
Apr 18 Javascript
jQuery中last()方法用法实例
Jan 06 Javascript
JS实现仿腾讯微博无刷新删除微博效果代码
Oct 16 Javascript
JS HTML5拖拽上传图片预览
Jul 18 Javascript
vue.js初学入门教程(2)
Nov 07 Javascript
smartupload实现文件上传时获取表单数据(推荐)
Dec 12 Javascript
详解vue使用vue-layer-mobile组件实现toast,loading效果
Aug 31 Javascript
vue+vant实现商品列表批量倒计时功能
Jan 13 Javascript
js实现简单放大镜效果
Mar 07 #Javascript
js实现文字头像的生成代码
Mar 07 #Javascript
JavaScript队列结构Queue实现过程解析
Mar 07 #Javascript
原生JS实现萤火虫效果
Mar 07 #Javascript
JavaScript实现轮播图片完整代码
Mar 07 #Javascript
JS实现瀑布流效果
Mar 07 #Javascript
Vue中使用better-scroll实现轮播图组件
Mar 07 #Javascript
You might like
用PHP实现小型站点广告管理
2006/10/09 PHP
基于mysql的论坛(1)
2006/10/09 PHP
PHP遍历目录函数opendir()、readdir()、closedir()、rewinddir()总结
2014/11/18 PHP
php常用数学函数汇总
2014/11/21 PHP
php 无限级分类 获取顶级分类ID
2016/03/13 PHP
PHP进阶学习之类的自动加载机制原理分析
2019/06/18 PHP
jquery图片延迟加载 前端开发技能必备系列
2012/06/18 Javascript
jquery中表单 多选框的一种巧妙写法
2015/09/06 Javascript
Node.js刷新session过期时间的实现方法推荐
2016/05/18 Javascript
基于Nodejs利用socket.io实现多人聊天室
2017/02/22 NodeJs
JavaScript创建对象的七种方式全面总结
2017/08/21 Javascript
基于Bootstrap实现城市三级联动
2017/11/23 Javascript
layui select动态添加option的实例
2018/03/07 Javascript
解决使用vue.js路由后失效的问题
2018/03/17 Javascript
详解vue 计算属性与方法跟侦听器区别(面试考点)
2018/04/23 Javascript
JavaScript实现百度搜索框效果
2020/03/26 Javascript
js如何找出字符串中的最长回文串
2018/06/04 Javascript
使用Vue实现图片上传的三种方式
2018/07/17 Javascript
this在vue和小程序中的使用详解
2019/01/28 Javascript
[02:33]2014DOTA2 TI每日综述 LGD涉险晋级DK闯入胜者组
2014/07/14 DOTA
[03:22]DSPL第一期精彩集锦:酷炫到底!
2014/11/07 DOTA
[01:09:19]DOTA2-DPC中国联赛 正赛 VG vs Aster BO3 第二场 2月28日
2021/03/11 DOTA
python利用beautifulSoup实现爬虫
2014/09/29 Python
python实现闹钟定时播放音乐功能
2018/01/25 Python
Python实现拷贝/删除文件夹的方法详解
2018/08/29 Python
把JSON数据格式转换为Python的类对象方法详解(两种方法)
2019/06/04 Python
Python搭建Spark分布式集群环境
2019/07/05 Python
Django框架视图函数设计示例
2019/07/29 Python
Anaconda的安装及其环境变量的配置详解
2020/04/22 Python
浅谈sklearn中predict与predict_proba区别
2020/06/28 Python
Python获取excel内容及相关操作代码实例
2020/08/10 Python
利用HTML5 Canvas制作一个简单的打飞机游戏
2015/05/11 HTML / CSS
美国第一大药店连锁机构:Walgreens(沃尔格林)
2019/10/10 全球购物
什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?
2016/08/13 面试题
单位在职证明范本
2014/01/09 职场文书
英语教育专业毕业生求职信
2014/08/28 职场文书