Javascript字符串模板简单实现(一)
来源:互联网 发布:c语言平方根号怎么表示 编辑:程序博客网 时间:2024/06/06 03:26
前言:前端现在的js框架层出不穷,而dom渲染的不同方式也是我们在实际开发中经常遇到的。模板渲染的方式,让我们从开发到维护dom变得简单轻松起来。 前端模板引擎JsRender ,jq的插件jQuery.tmpl ,ng中的mvvm模式……。
随便写写,纯属娱乐。
字符串模板:'<a href="{0}">{1}-{2}</a>'
需要替换的变量:'http://www.baidu.com','百度','中国'
我们现在需要达到的效果就是,将这三个字符串,分别一 一对应字符串模板中的{0},{1},{2}
进行替换,达到的效果为:
<a href="http://www.baidu.com">百度-中国</a>
思路:将{}
替换为变量,首先我们想到的是什么?是的,正则,使用正则匹配{}
,把{}
检索出来并替换成对应的字符串。
先上代码
<div id="container"></div><script type="text/javascript"> (function(window){ function fun(str){ this.str = str; } fun.prototype.format = function(){ var arg = arguments; return this.str.replace(/\{(\w+)\}/g, function(a,b){ return arg[b] || ''; }); } window.fun = fun; })(this); (function(){ var tpl = '<a href="{0}">{1}-{2}</a>'; var result = new fun(tpl).format('http://www.baidu.com','百度','中国'); document.querySelector('div#container').innerHTML = result; })();</script>
运行结果:
<div id="container"><a href="http://www.baidu.com">百度-中国</a></div>
代码解释:
(function(window){ //构造函数 function fun(str){ this.str = str; } //函数扩展方法 fun.prototype.format = function(){ //获取函数参数 var arg = arguments; /* replace的高级用法: 第一个参数,是正则匹配类似 {a} 的字符串 第二个参数,取函数的返回值,这里的a代表正则表达式所匹配的正则模式,即{0},{1},{2}, b代表着正则模式中的表达式即 0,1 ,2 function(a,b){ //return } */ return this.str.replace(/\{(\w+)\}/g, function(a,b){ return arg[b] || ''; }); } //全局声明fun window.fun = fun;})(window);(function(){ //字符串模板 var tpl = '<a href="{0}">{1}-{2}</a>'; //执行函数,format内部的是3个字符串将一一对应tpl中相应的字符串模板 var result = new fun(tpl).format('http://www.baidu.com','百度','中国'); //将结果展示在div中 document.querySelector('div#container').innerHTML = result;})();
阅读全文
0 0
- Javascript字符串模板简单实现(一)
- Javascript字符串模板简单实现(二)
- c++模板重载之字符串模板库的简单实现
- javascript 模板库 Handlebars 简单教程(一)
- 简单的字符串模板
- 字符串作为freemarker模板的简单实现例子
- java 字符串作为freemarker模板的简单实现例子
- 字符串作为freemarker模板的简单实现例子
- 字符串作为freemarker模板的简单实现例子
- javaScript 模板一
- java 字符串占位符替换之字符串占位符实现(java简单模板渲染实现)
- es6 javascript的模板字符串
- javascript 字符串简单排序
- 一维字符串hash模板
- 数据库应用一、oracle实现简单的字符串截取
- redis设计与实现(一)简单动态字符串
- javascript实现tree视图(一).简单静态树
- 简单的Javascript实现内容的增删改(一)
- 【C/C++】List Leaves/层序遍历叶子结点
- 第二十六篇 jQuery 学习8 遍历-父亲兄弟子孙元素
- Bayer Sensor OV13850
- Kotlin进阶之集合与区间
- LeetCode-Reverse Integer
- Javascript字符串模板简单实现(一)
- Angular + protractor + mocha
- Median of Two Sorted Arrays
- LintCode--first unique number in stream
- HighGUI的初步认识
- 【ssm框架】配置log4j日志
- @Repository、@Service、@Controller 和 @Component
- scrapy爬取豆瓣top250电影
- css优先级及css字体和table的部分属性