JavaScript基于replace+正则实现ES6的字符串模版功能
本文实例讲述了JavaScript基于replace+正则实现ES6的字符串模版功能。分享给大家供大家参考,具体如下:
采用拼接字符串的形式,将JSON数据嵌入HTML中。开始时代码量较少,暂时还可以接受。但当页面结构复杂起来后,其弱点开始变得无法忍受起来:
书写不连贯。每写一个变量就要断一下,插入一个+和“。十分容易出错。
无法重用。HTML片段都是离散化的数据,难以对其中重复的部分进行提取。
无法很好地利用标签。这是HTML5中新增的一个标签,标准极力推荐将HTML模板放入标签中,使代码更简洁。
replace+正则实现
项目刚开始用的数据拼接
functionformatString(){ if(arguments.length===0) returnnull; varstr=arguments[0]; for(vari=1;i第一个参数为需要渲染的数据模板,其他参数为数据:
formatString('{0},Mynameis{1}','everyMan','吴孔云')这种后期维护较麻烦,一旦更改顺序,都需要更改~~就跟函数需要接收一大串参数一样,我们尽量写成对象的形式,
varmyObject=maker(f,l,m,c,s);//不建议写法 varmyObject=maker({//建议写法 first:f, last:l, state:s, city:c });在网上搜索看到一个例子,可以类似实现ES6的字符串模版形式,博客是一个高中生写的,戳链接。
functionrender(template,context){ //被转义的的分隔符{和}不应该被渲染,分隔符与变量之间允许有空白字符 vartokenReg=/(\\)?\{([^\{\}\\]+)(\\)?\}/g; returntemplate.replace(tokenReg,function(word,slash1,token,slash2){ //如果有转义的\{或\}替换转义字符 if(slash1||slash2){ returnword.replace('\\',''); } //切割token,实现级联的变量也可以展开 varvariables=token.replace(/\s/g,'').split('.'); varcurrentObject=context; vari,length,variable; for(i=0,length=variables.length;i扩展:ES6字符串模版API
ES6引入了一种新型的字符串字面量语法,我们称之为模板字符串(templatestrings)。除了使用反撇号字符`代替普通字符串的引号'或”外,它们看起来与普通字符串并无二致。
vara='kenny' `mynameis${a}`//"mynameiskenny"可以用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程序设计有所帮助。