时间:2021-05-26
本文实例讲述了JavaScript基于replace+正则实现ES6的字符串模版功能。分享给大家供大家参考,具体如下:
采用拼接字符串的形式,将 JSON 数据嵌入 HTML 中。开始时代码量较少,暂时还可以接受。但当页面结构复杂起来后,其弱点开始变得无法忍受起来:
书写不连贯。每写一个变量就要断一下,插入一个 + 和 “。十分容易出错。
无法重用。HTML 片段都是离散化的数据,难以对其中重复的部分进行提取。
无法很好地利用 标签。这是 HTML5 中新增的一个标签,标准极力推荐将 HTML 模板放入 标签中,使代码更简洁。
replace+正则实现
项目刚开始用的数据拼接
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;},第一个参数为需要渲染的数据模板,其他参数为数据:
formatString('{0},My name is {1}', 'everyMan', '吴孔云')这种后期维护较麻烦,一旦更改顺序,都需要更改~~就跟函数需要接收一大串参数一样,我们尽量写成对象的形式,
var myObject = maker(f,l,m,c,s);//不建议写法var myObject = maker({//建议写法 first : f, last: l, state:s, city:c});在网上搜索看到一个例子,可以类似实现ES6的字符串模版形式,博客是一个高中生写的,戳链接 。
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)。除了使用反撇号字符 ` 代替普通字符串的引号 ' 或 ” 外,它们看起来与普通字符串并无二致。
var a = 'kenny'`my name is ${a}` //"my name is kenny"可以用bable编译成ES5。
PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:
JavaScript正则表达式在线测试工具:
http://tools.jb51.net/regex/javascript
正则表达式在线生成工具:
http://tools.jb51.net/regex/create_reg
更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《ECMAScript6(ES6)入门教程》、《JavaScript正则表达式技巧大全》、《JavaScript字符与字符串操作技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript错误与调试技巧总结》及《JavaScript数学运算用法总结》
希望本文所述对大家JavaScript程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
前面的话 正则表达式是javascript操作字符串的一个重要组成部分,但在以往的版本中并未有太多改变。然而,在ES6中,随着字符串操作的变更,ES6也对正则
最近在项目中使用了ES6的模版字符串,在这里加以总结。1.之前我们也可以使用JavaScript输出模版字符串,通常是下面这样的:$("#result").ap
本节我们来学习ES6中字符串类型的扩展,包括一些字符串对象的新增方法的使用等。字符的Unicode表示法ES6加强了对Unicode的支持,JavaScript
字符串是一种重要的数据类型,而正则表达式则是赋予了编程人员更多操作字符串的能力。ES6的创作者为字符串和正则表达式添加了许多的新功能。下面玲珑将来进行一个全面的
拓展的方法子串的识别ES6之前判断字符串是否包含子串,用indexOf方法,ES6新增了子串的识别方法。includes():返回布尔值,判断是否找到参数字符串