最轻巧的javascript模板函数

随着移动互联网的发展APP站点增加,ajax数据交互变得频繁起来,许多javascript 模板终于有了用武之地。

看过一些js模板引擎,引入很多语法,解析,使得模板字符串看上去更漂亮,更接近UI,去程序化是他们的目的。

两年前自己也写了一个js template函数在项目中使用,今天精简了一下语法,增加error report功能方便了模板解析出错时定位问题。

本着开源的精神,我把它放到了github上
https://github.com/fushanlang/js-template

以及 oschina开源库里

http://git.oschina.net/fushanlang/javascript-template

function js_template(t, v) {
    var a = "";
    var echo = function (b) {
        a += b
    };
    var z = window.AJ;
    window.AJ = z = !z ? [] : z;
    var s = "_{" + Math.random() + "}_";
    var p = t.replace(/\n|\r|\t/g, "");
    var j = [];
    p = p.replace(/(.*?)<\/js>/g, function ($0, $1) {
        j.push($1);
        return s
    });
    var txt = p.split(s);
    p = "";
    for (var i = 0; i < j.length; ++i) {
        p += "echo(txt[" + i + "]);";
        p += j[i]
    }
    ;
    p += "echo(txt[" + j.length + "]);";
    try {
        if (v) {
            for (var i in v) {
                eval("var " + i + " =v[i];")
            }
        }
        ;
        eval(p)
    } catch (error) {
        z.push([error, p, t])
    } finally {
        return a
    }
}

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Protected by WP Anti Spam