基于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 相关文章推荐
extJs 常用到的增,删,改,查操作代码
Dec 28 Javascript
js中的值类型和引用类型小结 文字说明与实例
Dec 12 Javascript
基于jquery的button默认enter事件(回车事件)。
May 18 Javascript
能说明你的Javascript技术很烂的五个原因分析
Oct 28 Javascript
关于图片的预加载过程中隐藏未知的
Dec 19 Javascript
JavaScript中的Truthy和Falsy介绍
Jan 01 Javascript
AngularJS语法详解(续)
Jan 23 Javascript
js判断手机和pc端选择不同执行事件的方法
Jan 30 Javascript
详解JavaScript的流程控制语句
Nov 30 Javascript
Angular 2父子组件数据传递之@Input和@Output详解(下)
Jul 05 Javascript
vue-router的两种模式的区别
May 30 Javascript
ES6 Class中实现私有属性的一些方法总结
Jul 08 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写MySQL数据 实现代码
2009/06/15 PHP
php strcmp使用说明
2010/04/22 PHP
了解PHP的返回引用和局部静态变量
2015/06/04 PHP
php批量删除操作(数据访问)
2017/05/23 PHP
PHP观察者模式示例【Laravel框架中有用到】
2018/06/15 PHP
Ajax+PHP实现的模拟进度条功能示例
2019/02/11 PHP
PHP+mysql防止SQL注入的方法小结
2019/04/27 PHP
JQuery 选择器 xpath 语法应用
2010/05/13 Javascript
在JavaScript中typeof的用途介绍
2013/04/11 Javascript
如何让浏览器支持jquery ajax load 前进、后退功能
2014/06/12 Javascript
javascript实现带节日和农历的日历特效
2015/02/01 Javascript
JS选项卡动态替换banner图片路径的方法
2015/05/11 Javascript
JavaScript计划任务后台运行的方法
2015/12/18 Javascript
微信小程序 富文本转文本实例详解
2016/10/24 Javascript
详解nodeJS中读写文件方法的区别
2017/03/06 NodeJs
Vue js 的生命周期(看了就懂)(推荐)
2019/03/29 Javascript
微信小程序开发实现消息推送
2020/11/18 Javascript
微信小程序位置授权处理方法
2019/06/13 Javascript
Vue.set 全局操作简单示例
2019/09/19 Javascript
Vue 构造选项 - 进阶使用说明
2020/08/14 Javascript
Python操作SQLite简明教程
2014/07/10 Python
Python中每次处理一个字符的5种方法
2015/05/21 Python
在Python的Django框架中包装视图函数
2015/07/20 Python
Python虚拟环境项目实例
2017/11/20 Python
Python高级编程之消息队列(Queue)与进程池(Pool)实例详解
2019/11/01 Python
如何基于python实现画不同品种的樱花树
2020/01/03 Python
django的autoreload机制实现
2020/06/03 Python
html5的pushstate以及监听浏览器返回事件的实现
2020/08/11 HTML / CSS
草莓网化妆品日本站:Strawberrynet日本
2017/10/20 全球购物
独特的礼品和创新的科技产品:The Grommet
2018/02/24 全球购物
小学端午节活动总结
2015/02/11 职场文书
在校生证明
2015/06/17 职场文书
2016大学生社会实践单位评语
2015/12/01 职场文书
python爬不同图片分别保存在不同文件夹中的实现
2021/04/02 Python
python爬虫框架feapde的使用简介
2021/04/20 Python
HTML通过表单实现酒店筛选功能
2021/05/18 HTML / CSS