templateJS解说

函数内巧用多行注释,实现js模板。

注释版templateJS函数说明

  • template(fn, options)
    返回有数据填充后的模板字符串
    是template.render(fn, options)快捷方式,具体详情可以查看template.render()
  • template.compile(fn)
    返回待填充数据的编译函数。
    fn: 包含注释文本的函数
    如果结构多次被使用,可以用变量保存此编译函数,再次使用。
  • template.render(fn, options)
    返回有数据填充后的模板字符串
    options: 填充数据对象
    fn: 包含注释文本的函数
  • template._getTmpl(fn)
    解析函数内注释文本返回模板字符串
    fn: 包含注释文本的函数

使用实例

注释函数

function() {
    /*!
        ...
        <div class="album-desc"><% desc %></div>
    */
    return false;
}

把添加注释的函数传递给template._getTmpl(),可以获得注释文本内容fn.toString(),等待下一步的模板解析。
注意:
a. 注释文本的开头需要添加感叹号!
b.注释后面需要添加return false;语句,否则将解析不到注释文本。

template.compile()

function albumItemCompile () {
    return template.compile(function() {/*!
        <li class="album-item">
            <div class="ellipsis album-item-title"><% name %></div>
            <div class="album-top">
                <div class="album-cover">
                    <img src="<% defCover %>" alt="">
                    <i class="album-img"></i>
                </div>
            </div>
            <div class="album-bottom">
                <div class="album-cover mask mask-cover">
                    <img src="<% defCover %>" alt="">
                </div>
            </div>
        </li>
    */
    return false;
    });
}

对注释文本解析,返回能填充数据的编译函数。
可保存此函数,这样多次使用而只解析一次。常见的有列表项模板的编译函数。

template.render()

var d = template.render(function() {/*!
    <div class="album-data"><% data %></div>
*/
    return false;
}, { data: data });
$('body').innerHtml = d;

返回填充了数据的html字符串。此函数可以用template(fn, data)代替。
参考链接:
JavaScript template engine in just 20 lines
函数内巧用注释实现多行文本拼接