微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JavaScript基于replace+正则实现ES6的字符串模版功能

本文实例讲述了JavaScript基于replace+正则实现ES6的字符串模版功能分享给大家供大家参考,具体如下:

采用拼接字符串的形式,将 JSON 数据嵌入 HTML 中。开始时代码量较少,暂时还可以接受。但当页面结构复杂起来后,其弱点开始变得无法忍受起来:

一个变量就要断一下,插入一个 + 和 “。十分容易出错。

提取。

标签。这是 HTML5 中新增的一个标签,标准极力推荐将 HTML 模板放入 标签中,使代码更简洁。

replace+正则实现

项目刚开始用的数据拼接

rush:js;"> function formatString() { if (arguments.length === 0) return null; var str = arguments[0]; for (var i = 1; i < arguments.length; i++) { var re = new RegExp('\\{' + (i - 1) + '\\}','gm'); str = str.replace(re,arguments[i]); } return str; },

一个参数为需要渲染的数据模板,其他参数为数据:

rush:js;"> formatString('{0},My name is {1}','everyMan','吴孔云')

这种后期维护较麻烦,一旦更改顺序,都需要更改~~就跟函数需要接收一大串参数一样,我们尽量写成对象的形式,

rush:js;"> var myObject = maker(f,l,m,c,s);//不建议写法 var myObject = maker({//建议写法 first : f,last: l,state:s,city:c });

在网上搜索看到一个例子,可以类似实现ES6的字符串模版形式,博客一个高中生写的,戳链接

rush:js;"> function render(template,context) { //被转义的的分隔符 { 和 } 不应该被渲染,分隔符与变量之间允许有空白字符 var tokenReg = /(\\)?\{([^\{\}\\]+)(\\)?\}/g; return template.replace(tokenReg,function (word,slash1,token,slash2) { //如果有转义的\{或\}替换转义字符 if (slash1 || slash2) { return word.replace('\\',''); } // 切割 token,实现级联的变量也可以展开 var variables = token.replace(/\s/g,'').split('.'); var currentObject = context; var i,length,variable; for (i = 0,length = variables.length; i < length; ++i) { variable = variables[i]; currentObject = currentObject[variable]; // 如果当前索引的对象不存在,则直接返回空字符串。 if (currentObject === undefined || currentObject === null) return ''; } return currentObject; }) } String.prototype.render = function (context) { return render(this,context); }; "{greeting}! My name is { author.name }.".render({ greeting: "Hi",author: { name: "hsfzxjy" } }); // Hi! My name is hsfzxjy.

扩展:ES6字符串模版API

ES6引入了一种新型的字符串字面量语法,我们称之为模板字符串(template strings)。除了使用反撇号字符 ` 代替普通字符串的引号 ' 或 ” 外,它们看起来与普通字符串并无二致。

rush:js;"> var a = 'kenny' `my name is ${a}` //"my name is kenny"

可以用bable编译成ES5。

PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:

JavaScript正则表达式在线测试工具:

正则表达式在线生成工具:

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》及《

希望本文所述对大家JavaScript程序设计有所帮助。

原文地址:https://www.jb51.cc/js/39729.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐