首页 新闻 搜索 专区 学院

Javascript代码的小小疑问(65)

0
[已解决问题] 解决于 2016-01-04 10:47
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模版引擎,我想问的是模版引擎为什么存在?这个例子的代码怎么用?自己写一般步骤是什么?

Coca-code的主页 Coca-code | 初学一级 | 园豆:9
提问于:2016-01-03 11:17
< >
分享
最佳答案
0

你这是三个问题啊!

为什么存在,因为需要;如果有大量循环的字符串拼接,比如表格,那是很麻烦的一个事情。

怎么用:

TemplateEngine ('xxxxxxxx', {});

自己写的步骤,模板引擎,一般都是字符串替换+代码解析,所以简单的先实现字符串替换吧。

TemplateEngine ('<p>@title</p>', {title: 'Hello'}); //输出<p>Hello</p>

奖励园豆:5
幻天芒 | 高人七级 |园豆:36594 | 2016-01-04 09:20

也就是不用一个个:document.createElement('');然后append了...

我用用看

Coca-code | 园豆:9 (初学一级) | 2016-01-04 10:53
其他回答(1)
0

不明觉厉,当年看的时候才几个,现在都连续问了65个问题啊,佩服题主坚持。但是长期这样,并不是办法,需要培养自己解决问题的能力,不能一遇到问题都不带思考,就来问,长期以往,就会缺乏思考能力,无法独立解决问题。当然,凡事没有绝对,至少你比那些不学的强多了,我只是小小提醒一下。

醉心 | 园豆:99 (初学一级) | 2016-01-04 09:35

嗯嗯,肿么办?

支持(0) 反对(0) Coca-code | 园豆:9 (初学一级) | 2016-01-04 10:45
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册