基于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 相关文章推荐
javascript TextArea动态显示剩余字符
Oct 22 Javascript
js 兼容多浏览器的回车和鼠标焦点事件代码(IE6/7/8,firefox,chrome)
Apr 14 Javascript
js取float型小数点后两位数的方法
Jan 18 Javascript
仿JQuery输写高效JSLite代码的一些技巧
Jan 13 Javascript
JavaScript字符串常用类使用方法汇总
Apr 14 Javascript
原生JS实现不断变化的标签
May 22 Javascript
详解微信小程序Page中data数据操作和函数调用
Sep 27 Javascript
基于vue实现分页效果
Nov 06 Javascript
浅谈Angularjs中不同类型的双向数据绑定
Jul 16 Javascript
微信小程序使用gitee进行版本管理
Sep 20 Javascript
在vue中使用G2图表的示例代码
Mar 19 Javascript
Vue解析剪切板图片并实现发送功能
Feb 04 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
解决PHP4.0 和 PHP5.0类构造函数的兼容问题
2013/08/01 PHP
PHP编程获取图片的主色调的方法【基于Imagick扩展】
2017/08/02 PHP
php 将json格式数据转换成数组的方法
2018/08/21 PHP
javascript编程起步(第六课)
2007/02/27 Javascript
中止javascript执行的方法
2014/02/14 Javascript
jQuery队列操作方法实例
2014/06/11 Javascript
javascript实现简单计算器效果【推荐】
2016/04/19 Javascript
BootStrap的alert提示框的关闭后再显示怎么解决
2016/05/17 Javascript
AngularJS中isolate scope的用法分析
2016/11/22 Javascript
javascript十六进制数字和ASCII字符之间的转换方法
2016/12/27 Javascript
jQuery编写设置和获取颜色的插件
2017/01/09 Javascript
JavaScript实现短暂提示框功能
2018/04/04 Javascript
对vue v-if v-else-if v-else 的简单使用详解
2018/09/29 Javascript
vue学习笔记五:在vue项目里面使用引入公共方法详解
2019/04/04 Javascript
说说Vuex的getters属性的具体用法
2019/04/15 Javascript
JS实现按比例缩小图片宽高
2020/08/24 Javascript
[04:38]完美世界携手游戏风云打造 卡尔工作室饰品系统篇
2013/04/25 DOTA
Python模拟三级菜单效果
2017/09/11 Python
python训练数据时打乱训练数据与标签的两种方法小结
2018/11/08 Python
Python操作json的方法实例分析
2018/12/06 Python
Python面向对象程序设计之类的定义与继承简单示例
2019/03/18 Python
Matplotlib绘制雷达图和三维图的示例代码
2020/01/07 Python
python在地图上画比例的实例详解
2020/11/13 Python
matplotlib部件之套索Lasso的使用
2021/02/24 Python
css3中transition属性详解
2014/09/02 HTML / CSS
CSS3动画特效在活动页中的应用
2020/01/21 HTML / CSS
init进程的作用
2015/08/20 面试题
Java里面Pass by value和Pass by Reference是什么意思
2016/05/02 面试题
实习期自我鉴定
2013/10/11 职场文书
个人找工作求职简历的自我评价
2013/10/20 职场文书
应付会计岗位职责
2013/12/12 职场文书
新学期红领巾广播稿
2014/01/14 职场文书
咖啡店自主创业商业计划书
2014/01/22 职场文书
机电职业生涯规划书范文
2014/03/08 职场文书
公司采购主管岗位职责
2014/06/17 职场文书
公务员政审个人总结
2015/02/12 职场文书