基于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 相关文章推荐
document.createElement()用法
Mar 13 Javascript
JS验证邮箱格式是否正确的代码
Dec 05 Javascript
js利用事件的阻止冒泡实现点击空白模态框的隐藏
Jan 24 Javascript
jquery通过load获取文件的内容并跳到锚点的方法
Jan 29 Javascript
jQuery通过扩展实现抖动效果的方法
Mar 11 Javascript
JS数字抽奖游戏实现方法
May 04 Javascript
JavaScript代码轻松实现网页内容禁止复制(代码简单)
Oct 23 Javascript
原生JS封装Ajax插件(同域、jsonp跨域)
May 03 Javascript
ES6新特性之解构、参数、模块和记号用法示例
Apr 01 Javascript
完美解决手机浏览器顶部下拉出现网页源或刷新的问题
Nov 30 Javascript
node实现生成带参数的小程序二维码并保存到本地功能示例
Dec 05 Javascript
微信小程序实现滑动切换自定义页码的方法分析
Dec 29 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
收音机鉴频器对声音的影响和频偏分析
2021/03/02 无线电
php 下载保存文件保存到本地的两种实现方法
2013/08/12 PHP
PHP生成短网址的3种方法代码实例
2014/07/08 PHP
php+mysql实现简单的增删改查功能
2015/07/13 PHP
PHP PDOStatement::bindParam讲解
2019/01/30 PHP
Javascript实例教程(19) 使用HoTMetal(1)
2006/12/23 Javascript
用js实现的抽象CSS圆角效果!!
2007/05/03 Javascript
jquery与google map api结合使用 控件,监听器
2010/03/04 Javascript
做好七件事帮你提升jQuery的性能
2014/02/06 Javascript
JS和函数式语言的三特性
2014/03/05 Javascript
jQuery中[attribute]选择器用法实例
2014/12/31 Javascript
JS实现的页面自定义滚动条效果
2015/10/26 Javascript
原生JS:Date对象全面解析
2016/09/06 Javascript
vue绑定class与行间样式style详解
2017/08/16 Javascript
JavaScript设计模式之单例模式原理与用法实例分析
2018/07/26 Javascript
vue-cli3全面配置详解
2018/11/14 Javascript
node.js中npm包管理工具用法分析
2020/02/14 Javascript
Vue.js 中制作自定义选择组件的代码附演示demo
2020/02/28 Javascript
vuex分模块后,实现获取state的值
2020/07/26 Javascript
使用Python下的XSLT API进行web开发的简单教程
2015/04/15 Python
探究python中open函数的使用
2016/03/01 Python
100行Python代码实现自动抢火车票(附源码)
2018/01/11 Python
在Pycharm中项目解释器与环境变量的设置方法
2018/10/29 Python
在python中利用KNN实现对iris进行分类的方法
2018/12/11 Python
python卸载后再次安装遇到的问题解决
2019/07/10 Python
Python使用字典实现的简单记事本功能示例
2019/08/15 Python
python GUI库图形界面开发之PyQt5浏览器控件QWebEngineView详细使用方法
2020/02/26 Python
python 代码运行时间获取方式详解
2020/09/18 Python
python3爬虫中多线程的优势总结
2020/11/24 Python
Python如何使用神经网络进行简单文本分类
2021/02/25 Python
草莓网美国官网:Strawberrynet USA
2016/12/11 全球购物
什么是GWT的Entry Point
2013/08/16 面试题
初中作文评语大全
2014/04/23 职场文书
优秀党务工作者先进事迹材料
2014/12/25 职场文书
圆明园纪录片观后感
2015/06/03 职场文书
历史名人教你十五个读书方法,赶快Get起来!
2019/07/18 职场文书