基于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 StringBuilder类实现
Dec 22 Javascript
8款非常棒的响应式jQuery 幻灯片插件推荐
Feb 02 Javascript
js二维数组排序的简单示例代码
Jan 24 Javascript
javascript动态创建及删除元素的方法
Dec 22 Javascript
bootstrap table小案例
Oct 21 Javascript
jquery css实现邮箱自动补全
Nov 14 Javascript
js仿网易表单及时验证功能
Mar 07 Javascript
Flask中获取小程序Request数据的两种方法
May 12 Javascript
JS和JQuery实现雪花飘落效果
Nov 30 jQuery
HTML+JavaScript实现扫雷小游戏
Sep 30 Javascript
javascript设计模式之装饰者模式
Jan 30 Javascript
基于vue hash模式微信分享#号的解决
Sep 07 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
检查url链接是否已经有参数的php代码 添加 ? 或 &amp;
2010/02/09 PHP
PHP 登录记住密码实现思路
2013/05/07 PHP
php将session放入memcached的设置方法
2014/02/14 PHP
php多功能图片处理类分享(php图片缩放类)
2014/03/14 PHP
PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间
2016/05/06 PHP
Yii Framework框架使用PHPExcel组件的方法示例
2019/07/24 PHP
JavaScript之引用类型介绍
2012/08/10 Javascript
修改file按钮的默认样式实现代码
2013/04/23 Javascript
使用Bootstrap框架制作查询页面的界面实例代码
2016/05/27 Javascript
js基于setTimeout与setInterval实现多线程
2016/06/17 Javascript
AngularJS中$http的交互问题
2017/03/29 Javascript
JavaScript 中Date对象的格式化代码方法汇总
2017/09/06 Javascript
js获取文件里面的所有文件名(实例)
2017/10/17 Javascript
vue-cli启动本地服务局域网不能访问的原因分析
2018/01/22 Javascript
vue .js绑定checkbox并获取、改变选中状态的实例
2018/08/24 Javascript
vue项目中使用Hbuilder打包app 设置沉浸式状态栏的方法
2018/10/22 Javascript
用vue设计一个日历表
2020/12/03 Vue.js
JavaScript 中的执行上下文和执行栈实例讲解
2021/02/25 Javascript
python开发之字符串string操作方法实例详解
2015/11/12 Python
python 输出上个月的月末日期实例
2018/04/11 Python
tensorflow1.0学习之模型的保存与恢复(Saver)
2018/04/23 Python
Flask框架信号用法实例分析
2018/07/24 Python
nohup后台启动Python脚本,log不刷新的解决方法
2019/01/14 Python
我就是这样学习Python中的列表
2019/06/02 Python
python列表,字典,元组简单用法示例
2019/07/11 Python
Python3 列表,数组,矩阵的相互转换的方法示例
2019/08/05 Python
python通过SSH登陆linux并操作的实现
2019/10/10 Python
IE兼容css3圆角的实现代码
2011/07/21 HTML / CSS
基于Modernizr 让网站进行优雅降级的分析
2013/04/21 HTML / CSS
Nordgreen台湾官网:极简北欧设计手表
2019/08/21 全球购物
RUIFIER官网:英国奢侈高级珠宝品牌
2020/06/12 全球购物
乌克兰鞋类购物网站:Eobuv.com.ua
2020/11/28 全球购物
J2EE面试题大全
2016/08/06 面试题
应届护士求职信范文
2014/01/26 职场文书
师范类求职信
2014/06/21 职场文书
刘公岛导游词
2015/02/05 职场文书