基于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 相关文章推荐
百度 popup.js 完美修正版非常的不错 脚本之家推荐
Apr 17 Javascript
跨浏览器的事件对象介绍
Jun 27 Javascript
javascript动态加载三
Aug 22 Javascript
jquery时间下拉框小例子
Apr 15 Javascript
jquery实现在页面加载完毕后获取图片高度或宽度
Jun 16 Javascript
javascript实现的一个随机点名功能
Aug 26 Javascript
js实现的牛顿摆效果
Mar 31 Javascript
JavaScript获取当前日期是星期几的方法
Apr 06 Javascript
javascript实现漂亮的拖动层,窗口拖拽特效
Apr 24 Javascript
JS实现CheckBox复选框全选全不选功能
May 06 Javascript
学习Angularjs分页指令
Jul 01 Javascript
详解javascript立即执行函数表达式IIFE
Feb 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
实用函数9
2007/11/08 PHP
用php获取远程图片并把它保存到本地的代码
2008/04/07 PHP
php中的curl使用入门教程和常见用法实例
2014/04/10 PHP
PHP实现多关键字加亮功能
2016/10/21 PHP
Laravel实现ORM带条件搜索分页
2019/10/24 PHP
laravel7学习之无限级分类的最新实现方法
2020/09/30 PHP
javascript 命名规则 变量命名规则
2010/02/25 Javascript
Javascript 判断Flash是否加载完成的代码
2010/04/12 Javascript
Jquery 绑定时间实现代码
2011/05/03 Javascript
javascript跑马灯悬停放大效果实现代码
2012/12/12 Javascript
onkeypress字符按键兼容所有浏览器使用介绍
2013/04/24 Javascript
使用JS 清空File控件的路径值
2013/07/08 Javascript
固定表格行列(expression)在IE下适用
2013/07/25 Javascript
js中widow.open()方法使用详解
2013/07/30 Javascript
JS幻灯片可循环播放可平滑旋转带滚动导航(自写)
2013/08/05 Javascript
教你如何自定义百度分享插件以及bshare分享插件的分享按钮
2014/06/20 Javascript
jQuery Validation Plugin验证插件手动验证
2016/01/26 Javascript
EditPlus 正则表达式 实战(3)
2016/12/15 Javascript
微信小程序“摇一摇”的实例代码
2017/07/20 Javascript
webpack4 处理CSS的方法示例
2018/09/03 Javascript
node 标准输入流和输出流代码实例
2019/09/19 Javascript
vue实现简易计算器功能
2021/01/20 Vue.js
Python实现拼接多张图片的方法
2014/12/01 Python
Python实现的根据IP地址计算子网掩码位数功能示例
2018/05/23 Python
Python 互换字典的键值对实例
2019/02/12 Python
python deque模块简单使用代码实例
2020/03/12 Python
英国最大的电子产品和家电零售企业:Currys PC World
2016/09/24 全球购物
汇集了世界上最好的天然和有机美容产品:LoveLula
2018/02/05 全球购物
Huda Beauty官方商店:化妆和美容产品
2020/09/05 全球购物
大学生求职简历的自我评价
2013/10/21 职场文书
矿泉水广告词
2014/03/20 职场文书
我的中国梦演讲稿600字
2014/08/19 职场文书
2016医师资格考试考生诚信考试承诺书
2016/03/25 职场文书
golang 如何通过反射创建新对象
2021/04/28 Golang
MySQL 表空间碎片的概念及相关问题解决
2021/05/07 MySQL
Apache SkyWalking 监控 MySQL Server 实战解析
2022/09/23 Servers