基于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添加String.Format方法
Aug 11 Javascript
window.open不被拦截的实现代码
Aug 22 Javascript
实用的JS正则表达式(手机号码/IP正则/邮编正则/电话等)
Jan 11 Javascript
了不起的node.js读书笔记之node的学习总结
Dec 22 Javascript
JS实现的仿东京商城菜单、仿Win右键菜单及仿淘宝TAB特效合集
Sep 28 Javascript
jQuery ajax分页插件实例代码
Jan 27 Javascript
关于json字符串与实体之间的严格验证代码
Nov 10 Javascript
vue实现ajax滚动下拉加载,同时具有loading效果(推荐)
Jan 11 Javascript
微信小程序 数据遍历的实现
Apr 05 Javascript
jquery获取img的src值实例介绍
Jan 16 jQuery
Angular7创建项目、组件、服务以及服务的使用
Feb 19 Javascript
JavaScript运动原理基础知识详解
Apr 02 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小偷的核心程序
2007/04/09 PHP
写出高质量的PHP程序
2012/02/04 PHP
浅析php学习的路线图
2013/07/10 PHP
JS 有名函数表达式全面解析
2010/03/19 Javascript
深入理解JavaScript定时机制
2010/10/29 Javascript
js判断变量初始化的三种形式及推荐用的形式
2014/07/22 Javascript
js+cookies实现悬浮购物车的方法
2015/05/25 Javascript
JS封装cookie操作函数实例(设置、读取、删除)
2015/11/17 Javascript
nodejs修复ipa处理过的png图片
2016/02/17 NodeJs
node文字生成图片的示例代码
2017/10/26 Javascript
vue+springboot实现项目的CORS跨域请求
2018/09/05 Javascript
如何解决React官方脚手架不支持Less的问题(小结)
2018/09/12 Javascript
vue语法自动转typescript(解放双手)
2019/09/18 Javascript
JS操作Fckeditor的一些常用方法(获取、插入等)
2020/02/19 Javascript
Vue检测屏幕变化来改变不同的charts样式实例
2020/10/26 Javascript
python 解析XML python模块xml.dom解析xml实例代码
2014/02/07 Python
python中使用OpenCV进行人脸检测的例子
2014/04/18 Python
Python编程之字符串模板(Template)用法实例分析
2017/07/22 Python
使用Python读取二进制文件的实例讲解
2018/07/09 Python
python 使用poster模块进行http方式的文件传输到服务器的方法
2019/01/15 Python
详解Python静态网页爬取获取高清壁纸
2019/04/23 Python
如何使用Python标准库进行性能测试
2019/06/25 Python
Python基于stuck实现scoket文件传输
2020/04/02 Python
Mountain Warehouse澳大利亚官网:欧洲家庭户外品牌倡导者
2016/11/20 全球购物
英国游戏机和游戏购物网站:365games.co.uk
2018/06/18 全球购物
匈牙利超级网上商店和优惠:Alza.hu
2019/12/17 全球购物
文秘人员工作职责
2014/01/31 职场文书
临床护士自荐信
2014/01/31 职场文书
医院工作检讨书范文
2014/02/10 职场文书
爱心捐款倡议书
2014/04/14 职场文书
2015年度党员自我评价范文
2015/03/03 职场文书
2016年春季开学典礼新闻稿
2015/11/25 职场文书
JavaScript 防篡改对象的用法示例
2021/04/24 Javascript
mysql 直接拷贝data 目录下文件还原数据的实现
2021/07/25 MySQL
 python中的元类metaclass详情
2022/05/30 Python
Windows Server 版本 20H2 于 8 月 9 日停止支持,Win10 版本 21H1 将于 12 月结束支
2022/07/23 数码科技