基于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 相关文章推荐
js中将URL中的参数提取出来作为对象的实现代码
Aug 16 Javascript
javascript实现dom动态创建省市纵向列表菜单的方法
May 14 Javascript
PHP+jQuery+Ajax+Mysql如何实现发表心情功能
Aug 06 Javascript
微信小程序(应用号)开发新闻客户端实例
Oct 24 Javascript
JavaScript队列、优先队列与循环队列
Nov 14 Javascript
AngularJs表单校验功能实例代码
Feb 09 Javascript
JavaScript Canvas绘制圆形时钟效果
Aug 20 Javascript
jQuery简介_动力节点Java学院整理
Jul 04 jQuery
angular中两种表单的区别(响应式和模板驱动表单)
Dec 06 Javascript
JavaScript 实现同时选取多个时间段的方法
Oct 17 Javascript
Vue列表循环从指定下标开始的多种解决方案
Apr 08 Javascript
Vue用mixin合并重复代码的实现
Nov 27 Vue.js
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
给apache2.2加上mod_encoding模块後 php5.2.0 处理url出现bug
2007/04/12 PHP
PHP整数取余返回负数的相关解决方法
2014/05/15 PHP
PHP 5.3新增魔术方法__invoke概述
2014/07/23 PHP
php下pdo的mysql事务处理用法实例
2014/12/27 PHP
php使用PDO获取结果集的方法
2017/02/16 PHP
php多进程应用场景实例详解
2019/07/22 PHP
JavaScipt基本教程之前言
2008/01/16 Javascript
jquery select(列表)的操作(取值/赋值)
2009/08/06 Javascript
jquery验证手机号是否正确实例讲解
2015/11/17 Javascript
Nodejs爬虫进阶教程之异步并发控制
2016/02/15 NodeJs
最棒的Angular2表格控件
2016/08/10 Javascript
基于vue的fullpage.js单页滚动插件
2017/03/20 Javascript
jQuery中的deferred使用方法
2017/03/27 jQuery
iscroll动态加载数据完美解决方法
2017/07/18 Javascript
VUE实现表单元素双向绑定(总结)
2017/08/08 Javascript
js匿名函数使用&amp;传参(实例)
2017/09/08 Javascript
Vue仿手机qq的实例代码(demo)
2017/09/08 Javascript
用最少的JS代码写出贪吃蛇游戏
2018/01/12 Javascript
详解vue 不同环境配置不同的打包命令
2019/04/07 Javascript
小程序云开发实现数据库异步操作同步化
2019/05/18 Javascript
vue+vant实现商品列表批量倒计时功能
2020/01/13 Javascript
jQuery实现点击滚动到指定元素上的方法分析
2020/03/19 jQuery
js实现星星打分效果
2020/07/05 Javascript
python获取标准北京时间的方法
2015/03/24 Python
Python3 模块、包调用&amp;路径详解
2017/10/25 Python
Python3网络爬虫之使用User Agent和代理IP隐藏身份
2017/11/23 Python
解决pycharm debug时界面下方不出现step等按钮及变量值的问题
2020/06/09 Python
VSCode中autopep8无法运行问题解决方案(提示Error: Command failed,usage)
2021/03/02 Python
英国女装网上商店:I Saw It First
2018/10/18 全球购物
幼儿园小班评语大全
2014/04/17 职场文书
产品陈列协议书(标准版)
2014/09/17 职场文书
国家税务局领导班子对照检查材料思想汇报
2014/10/04 职场文书
Nginx本地目录映射实现代码实例
2021/03/31 Servers
RestTemplate如何通过HTTP Basic Auth认证示例说明
2022/03/17 Java/Android
Python图像处理库PIL详细使用说明
2022/04/06 Python
使用HBuilder制作一个简单的HTML5网页
2022/07/07 HTML / CSS