var TemplateEngine = function(html, options) { var re = /<%([^%>]+)?%>/g, reExp = /(^( )?(if|for|else|switch|case|break|{|}))(.*)?/g, code = 'var r=[];\n', cursor = 0; var add = function(line, js) { js? (code += line.match(reExp) ? line + '\n' : 'r.push(' + line + ');\n') : (code += line != '' ? 'r.push("' + line.replace(/"/g, '\\"') + '");\n' : ''); return add; } while(match = re.exec(html)) { add(html.slice(cursor, match.index))(match[1], true); cursor = match.index + match[0].length; } add(html.substr(cursor, html.length - cursor)); code += 'return r.join("");'; return new Function(code.replace(/[\r\t\n]/g, '')).apply(options); }
这是复制的别人的15行js模版引擎,我想问的是模版引擎为什么存在?这个例子的代码怎么用?自己写一般步骤是什么?
你这是三个问题啊!
为什么存在,因为需要;如果有大量循环的字符串拼接,比如表格,那是很麻烦的一个事情。
怎么用:
TemplateEngine ('xxxxxxxx', {});
自己写的步骤,模板引擎,一般都是字符串替换+代码解析,所以简单的先实现字符串替换吧。
TemplateEngine ('<p>@title</p>', {title: 'Hello'}); //输出<p>Hello</p>
也就是不用一个个:document.createElement('');然后append了...
我用用看
不明觉厉,当年看的时候才几个,现在都连续问了65个问题啊,佩服题主坚持。但是长期这样,并不是办法,需要培养自己解决问题的能力,不能一遇到问题都不带思考,就来问,长期以往,就会缺乏思考能力,无法独立解决问题。当然,凡事没有绝对,至少你比那些不学的强多了,我只是小小提醒一下。
嗯嗯,肿么办?