简单的html渲染模板引擎
2016-01-07 19:18
716 查看
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>简单的html渲染模板引擎</title> <script> //解析ejs var parseTpl = function( str, data ) { var tmpl = 'var __p=[];' + 'with(obj||{}){__p.push(\'' + str.replace( /\\/g, '\\\\' ) .replace( /'/g, '\\\'' ) .replace( /<%=([\s\S]+?)%>/g, function( match, code ) { return '\',' + code.replace( /\\'/, '\'' ) + ',\''; } ) .replace( /<%([\s\S]+?)%>/g, function( match, code ) { return '\');' + code.replace( /\\'/, '\'' ) .replace( /[\r\n\t]/g, ' ' ) + '__p.push(\''; } ) .replace( /\r/g, '\\r' ) .replace( /\n/g, '\\n' ) .replace( /\t/g, '\\t' ) + '\');}return __p.join("");', func = new Function( 'obj', tmpl ); return data ? func( data ) : func; }; //解析dom function render(element,data){ //模板转义 var tpl=element.innerHTML.replace(/</g, '<').replace(/>/g, '>') var html=parseTpl(tpl,data||{}) if(element._render){ element._render.innerHTML=html }else{ var div=document.createElement("div") div.innerHTML=html element._render=element.parentNode.insertBefore(div,element) } } </script> </head> <body> <div class="ejs123" style="display: none;"> <%for(var i=0;i<3;i++){%> <div>ok<%=i%></div> <%}%> </div> <textarea class="ejs123" style="display: none;"> <%for(var i=0;i<3;i++){%> <div>ok<%=name%></div> <%}%> </textarea> </body> <script> window.name="-caoke" //render 第一个参数是dom元素,第二个是传入的数据 var elements=document.querySelectorAll(".ejs123") //第一次创建 for(var i=0;i<elements.length;i++){ var element=elements[i] render(element,{ author:"caoke" }) } //第二次修改 for(var i=0;i<elements.length;i++){ var element=elements[i] render(element,{ author:"caoke" }) } </script> </html>
相关文章推荐
- Mac下文本编辑器无法生成html文件
- HTML-Day01-2
- HTML 空白
- HTML-Day01-1
- ajax实现返回数据是html类型的跨域问题
- HTML <img> 标签的 alt 属性
- HTML的标准化
- HTML中的路径问题
- HTML <fieldset> 标签的使用
- 向html某个元素中添加信息
- html(三)页面基本标签及文本段落的设置
- body元素和html元素之间的一些表现
- html中元素的padding属性与margin属性
- 采用html 的a标签,href连接为文件时无法下载解决方案
- Html prevent autoComplete
- html 5 flash 播放器开发
- 如何处理 在html中 li 的高度自适应(且li里面的内容有浮动的情况下)
- html编码规范
- HTML标签
- html学习笔记二