美文网首页
art-template

art-template

作者: osoLife | 来源:发表于2017-06-20 19:43 被阅读0次

    本质

    • 正则、替换

    特性

    • 拥有接近 JavaScript 渲染极限的的性能
    • 调试友好:语法、运行时错误日志精确到模板所在行;支持在模板文件上打断点(Webpack Loader)
    • 支持压缩输出页面中的 HTML、CSS、JS 代码
    • 支持 Express、Koa、Webpack
    • 支持模板继承与子模板
    • 兼容 EJS、Underscore、LoDash 模板语法
    • 模板编译后的代码支持在严格模式下运行
    • 支持 JavaScript 语句与模板语法混合书写
    • 支持自定义模板的语法解析规则
    • 浏览器版本仅 6KB 大小

    渲染变量

    // 标准语法
    <div id="box">
    </div>
    
    <script type="text/html" id="tpl">
        <h1>{{title}}</h1>
    </script>
    
    var data={
        title:"hello osoLife"
    };
    var htmlStr=template("tpl",data);
    $("#box").html(htmlStr);
    
    // 原始语法
    <div id="box">      
    </div>
    
    <script type="text/html" id="tpl">
        <%=msg%>
    </script>
    
    var data={
        msg:"hello world"
    };
    var htmlStr="";
    htmlStr=template("tpl",data); 
    $("#box").html(htmlStr);
    

    渲染列表

    <div id="box">  
    </div>
    
    <script type="text/html"  id="tpl">
        <%for(var i=0;i<artList.length;i++){%>
            标题是:<%=artList[i].title%><br/>
        <%}%>
    </script>
    
    var data={
        artList:[
            {title:"第一个标题"},
            {title:"第二个标题"},
            {title:"第三个标题"},
            {title:"第四个标题"},
            {title:"第五个标题"}
        ]
    };
    var htmlStr=template("tpl",data);
    $("#box").html(htmlStr);
    

    字符串模板编译

    // 模板放到JS里
    // 示例一:
    <div id="box">
    </div>
    
    var tplStr="<%=msg%>"; // 模板字符串
    var data={msg:"osoLife"};
    var render=template.compile(tplStr); // 生成一个编译函数
    var htmlStr=render(data); // 使用渲染函数,渲染数据,返回htmlStr
    $("#box").html(htmlStr);
    
    // 示例二:
    <div id="box">
    </div>
    
    var str='<ul>'+
        '<%for(var i=0;i<arr.length;i++){%>'+
        '<li><%=arr[i]%></li>'+
        '<%}%>'+
        '</ul>';
    var data={
        arr:['A','B','C']
    };
    var render=template.compile(str); //编译普通字符串
    var htmlStr=render(data);
    $("#box").html(htmlStr);
    

    each(循环)

    // 标准语法
    // 1.循环数组
    <div id="box">
    </div>
    
    <script type="text/html" id="tpl">
        <h1>{{title}}</h1>  
        <ul>
            {{each content value key}}  
            <li>{{value}}</li>
            {{/each}}
        </ul>
    </script>
    
    var data={
        title:'兴趣爱好',
        content:['上网','骑车','打球']
    };
    var htmlStr=template("tpl",data);
    $("#box").html(htmlStr);
    
    // 2.循环JSON
    div id="box">
    </div>
    
    <script type="text/html" id="tpl">
        <ul>
            {{each json value key}} 
            <li>{{key}}------->{{value}}</li>
            {{/each}}
        </ul>
    </script>
    
    var data={
        json:{
            a:'A',
            b:'B',
            c:'C'
        }
    };
    var htmlStr=template("tpl",data);
    $("#box").html(htmlStr);
    
    // 原始语法
    <div id="box">
    </div>
        
    <script type="text/html" id="tpl">
        <h1><%=title%></h1>
        <ul>
            <%for(var i=0;i<arr.length;i++){%>
                <li><%=arr[i]%>---><%=i%></li>
            <%}%>
        </ul>
    </script>
    
    var data={
        title:'hello world',
        arr:['A','B','C']
    };
    var htmlStr=template("tpl",data);
    $("#box").html(htmlStr);
    

    include

    // 标准语法
    <div id="box">
    </div>
        
    <script type="text/html" id="tpl">
        <h1>{{title}}</h1>
        {{include 'list'}}
    </script>
    <script type="text/html" id="list">
        <ul>
            {{each json value key}} 
            <li>{{key}}------->{{value}}</li>
            {{/each}}
        </ul>
    </script>
    
    var data={
        title:'hello world',
        json:{
            a:'A',
            b:'B',
            c:'C'
        }
    };
    var htmlStr=template("tpl",data);
    $("#box").html(htmlStr);
    
    // 原始语法
    <div id="box">
    </div>
        
    <script type="text/html" id="list1">
        <h1><%=title%></h1>
        <ul>
            <%for(var i=0;i<arr.length;i++){%>
                <li><%=arr[i]%>---><%=i%></li>
            <%}%>
        </ul>
        <%include('list2')%>
    </script>
    <script type="text/html" id="list2">
        <ol>
            <%for(var key in json){%>
                <li><%=key%>-----><%=json[key]%></li>
            <%}%>
        </ol>
    </script>
    

    非转义输出

    示例:
    {{#msg}}或<%=#msg%>
    
    <div id="box">
    </div>
        
    <script type="text/html" id="tpl">
        <p><%=#title%></p>
    </script>
    
    var data={
        title:'<strong>我是加粗了</strong>',
    };
    var htmlStr=template("tpl",data);
    $("#box").html(htmlStr);
    

    修改界定符(自定义模板标记)

    相关文章

      网友评论

          本文标题:art-template

          本文链接:https://www.haomeiwen.com/subject/tseaqxtx.html