基于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获取height和width的方法说明
Jan 06 Javascript
ECMAScript6函数默认参数
Jun 12 Javascript
JS实现同一个网页布局滑动门和TAB选项卡实例
Sep 23 Javascript
使用jquery.qrcode.min.js实现中文转化二维码
Mar 11 Javascript
EasyUi中的Combogrid 实现分页和动态搜索远程数据
Apr 01 Javascript
Web Uploader文件上传插件使用详解
May 10 Javascript
浅谈javascript中的 “ &amp;&amp; ” 和 “ || ”
Feb 02 Javascript
浅谈Node.js轻量级Web框架Express4.x使用指南
May 03 Javascript
vue实现同一个页面可以有多个router-view的方法
Sep 20 Javascript
vue滚动固定顶部及修改样式的实例代码
May 30 Javascript
JavaScript深入V8引擎以及编写优化代码的5个技巧
Jun 24 Javascript
前端vue+elementUI如何实现记住密码功能
Sep 20 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
地球防卫队:陪着奥特曼打小怪兽的人类力量 那些经典队服
2020/03/08 日漫
三个类概括PHP的五种设计模式
2012/09/05 PHP
php实现按文件名搜索文件的远程文件查找器
2014/05/10 PHP
php实现简单的语法高亮函数实例分析
2015/04/27 PHP
php文件读取方法实例分析
2015/06/20 PHP
PHP使用数组实现矩阵数学运算的方法示例
2017/05/29 PHP
纯CSS3实现质感细腻丝滑按钮
2021/03/09 HTML / CSS
一个页面元素appendchild追加到另一个页面元素的问题
2013/01/27 Javascript
javascript中注册和移除事件的4种方式
2013/03/20 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 简史
2015/01/09 Javascript
非常酷炫的Bootstrap图片轮播动画
2016/05/27 Javascript
详解Angular CLI + Electron 开发环境搭建
2017/07/20 Javascript
Angular实现图片裁剪工具ngImgCrop实践
2017/08/17 Javascript
详解.vue文件中style标签的几个标识符
2018/07/17 Javascript
详解使用mpvue开发github小程序总结
2018/07/25 Javascript
vue-dplayer 视频播放器实例代码
2019/11/08 Javascript
jQuery 隐藏/显示效果函数用法实例分析
2020/05/20 jQuery
vue监听滚动事件的方法
2020/12/21 Vue.js
Python实现抓取网页并且解析的实例
2014/09/20 Python
Python numpy 提取矩阵的某一行或某一列的实例
2018/04/03 Python
python如何实现从视频中提取每秒图片
2020/10/22 Python
python django生成迁移文件的实例
2019/08/31 Python
有趣的Python图片制作之如何用QQ好友头像拼接出里昂
2020/04/22 Python
Django ORM filter() 的运用详解
2020/05/14 Python
Python模拟登录requests.Session应用详解
2020/11/17 Python
HTML5中的Web Notification桌面右下角通知功能的实现
2018/04/19 HTML / CSS
SEPHORA新西兰官方网站:购买化妆品和护肤品
2016/12/02 全球购物
在线购买澳大利亚设计师手拿包和奢华晚装手袋:Olga Berg
2019/03/20 全球购物
Ajxa常见问题都有哪些
2014/03/26 面试题
自我评价怎么写好呢?
2013/12/05 职场文书
检察官就职演讲稿
2014/01/13 职场文书
春节联欢会主持词
2014/03/24 职场文书
一次性工伤赔偿协议书范本
2014/11/25 职场文书
为什么 Nginx 比 Apache 更牛逼
2021/03/31 Servers
如何利用map实现Nginx允许多个域名跨域
2021/03/31 Servers
MySQL中dd::columns表结构转table过程及应用详解
2022/09/23 MySQL