基于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 相关文章推荐
子窗口、父窗口和Silverlight之间的相互调用
Aug 16 Javascript
javascript动态改变img的src属性图片不显示的解决方法
Oct 20 Javascript
jquery拖动插件(jquery.drag)使用介绍
Jun 18 Javascript
jquery ztree实现下拉树形框使用到了json数据
May 14 Javascript
Backbone.js框架中简单的View视图编写学习笔记
Feb 14 Javascript
再次谈论Javascript中的this
Jun 23 Javascript
bootstrap table表格使用方法详解
Apr 26 Javascript
bootstrap fileinput组件整合Springmvc上传图片到本地磁盘
May 11 Javascript
Bootstrap响应式表格详解
May 23 Javascript
AngularJS基于factory创建自定义服务的方法详解
May 25 Javascript
axios简单实现小程序延时loading指示
Jul 30 Javascript
vue2 v-model/v-text 中使用过滤器的方法示例
May 09 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学习之运算符相关概念
2011/06/09 PHP
强制PHP命令行脚本单进程运行的方法
2014/04/15 PHP
php面向对象编程self和static的区别
2016/05/08 PHP
PHP实现一个限制实例化次数的类示例
2019/09/16 PHP
jQuery经过一段时间自动隐藏指定元素的方法
2015/03/17 Javascript
JS、jQuery中select的用法详解
2016/04/21 Javascript
jquery 判断selection range 是否在容器中的简单实例
2016/08/02 Javascript
深入浅出讲解ES6的解构
2016/08/03 Javascript
JavaScript中setTimeout的那些事儿
2016/11/14 Javascript
vue实现登录后页面跳转到之前页面
2018/01/07 Javascript
vue项目中运用webpack动态配置打包多种环境域名的方法
2019/06/24 Javascript
layui扩展上传组件模拟进度条的方法
2019/09/23 Javascript
微信小程序实现上传多个文件 超过10个
2020/03/30 Javascript
javascript中contains是否包含功能实现代码(扩展字符、数组、dom)
2020/04/07 Javascript
openlayers 3实现车辆轨迹回放
2020/09/24 Javascript
Vant picker 多级联动操作
2020/11/02 Javascript
[36:37]2014 DOTA2华西杯精英邀请赛5 24 VG VS iG
2014/05/25 DOTA
python中wx将图标显示在右下角的脚本代码
2013/03/08 Python
Flask框架的学习指南之开发环境搭建
2016/11/20 Python
python 发送和接收ActiveMQ消息的实例
2019/01/30 Python
python+selenium 点击单选框-radio的实现方法
2019/09/03 Python
pytorch .detach() .detach_() 和 .data用于切断反向传播的实现
2019/12/27 Python
在django admin详情表单显示中添加自定义控件的实现
2020/03/11 Python
Python调用shell命令常用方法(4种)
2020/05/11 Python
CSS3实现文字波浪线效果示例代码
2016/11/20 HTML / CSS
html5默认气泡修改的代码详解
2020/03/13 HTML / CSS
Levi’s美国官网:美国著名的牛仔裤品牌
2016/08/19 全球购物
假日旅行社实习自我鉴定
2013/09/24 职场文书
生产部主管岗位职责
2014/01/06 职场文书
学习雷锋精神演讲稿
2014/05/10 职场文书
团队精神的演讲稿
2014/05/14 职场文书
农村党员一句话承诺
2014/05/30 职场文书
关于美容院的活动方案
2014/08/14 职场文书
质量承诺书格式范文
2015/04/28 职场文书
导游词之无锡古运河
2019/11/14 职场文书
Redis+AOP+自定义注解实现限流
2022/06/28 Redis