基于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基础知识之数据类型
Aug 06 Javascript
js实现幻灯片效果(基于jquery插件)
Nov 05 Javascript
浅谈Javascript如何实现匀速运动
Dec 19 Javascript
jQuery绑定事件-多种实现方式总结
May 09 Javascript
轮播图组件js代码
Aug 08 Javascript
AngularJS API之copy深拷贝详解及实例
Sep 14 Javascript
jQuery.cookie.js实现记录最近浏览过的商品功能示例
Jan 23 Javascript
React Native中NavigatorIOS组件的简单使用详解
Jan 27 Javascript
r.js来合并压缩css文件的示例
Apr 26 Javascript
Angular如何在应用初始化时运行代码详解
Jun 11 Javascript
实例分析编写vue组件方法
Feb 12 Javascript
JS函数动态传递参数的方法分析【基于arguments对象】
Jun 05 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中echo和print的区别
2014/08/28 PHP
php选择排序法实现数组排序实例分析
2015/02/16 PHP
thinkPHP中验证码的简单使用方法
2015/12/26 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
拖动Html元素集合 Drag and Drop any item
2006/12/22 Javascript
JavaScript访问样式表代码
2010/10/15 Javascript
js中判断数字\字母\中文的正则表达式 (实例)
2012/06/29 Javascript
jquery获取特定name所有选中的checkbox,支持IE9标准模式
2013/03/18 Javascript
js绑定事件this指向发生改变的问题解决方法
2013/04/23 Javascript
浏览器兼容console对象的简要解决方案分享
2013/10/24 Javascript
JavaScript使用位运算符判断奇数和偶数的方法
2015/06/01 Javascript
jquery马赛克拼接翻转效果代码分享
2015/08/24 Javascript
jQuery中常用的遍历函数用法实例总结
2015/09/01 Javascript
JavaScript ParseFloat()方法
2015/12/18 Javascript
原生js实现类似fullpage的单页/全屏滚动
2017/01/22 Javascript
vue 实现 tomato timer(蕃茄钟)实例讲解
2017/07/24 Javascript
webpack自动打包和热更新的实现方法
2019/06/24 Javascript
js判断非127开头的IP地址的实例代码
2020/01/05 Javascript
Python中函数的参数传递与可变长参数介绍
2015/06/30 Python
Python中的单继承与多继承实例分析
2018/05/10 Python
Python将文本去空格并保存到txt文件中的实例
2018/07/24 Python
pyqt远程批量执行Linux命令程序的方法
2019/02/14 Python
Python协程 yield与协程greenlet简单用法示例
2019/11/22 Python
基于CSS3实现的漂亮Menu菜单效果代码
2015/09/10 HTML / CSS
深入理解css属性的选择对动画性能的影响
2016/04/20 HTML / CSS
HTML5中indexedDB 数据库的使用实例
2017/05/11 HTML / CSS
企业给企业的表扬信
2014/01/13 职场文书
幼儿园教师培训方案
2014/02/04 职场文书
高中生评语大全
2014/04/25 职场文书
环保倡议书100字
2014/05/15 职场文书
红色故事演讲稿
2014/05/22 职场文书
写景作文评语集锦
2014/12/25 职场文书
写给医生的感谢信
2015/01/22 职场文书
追悼会家属答谢词
2015/09/29 职场文书
JavaScript数组reduce()方法的语法与实例解析
2021/07/07 Javascript
2022年显卡天梯图(6月更新)
2022/06/17 数码科技