移动web开发—— 模板引擎详解

很多人对于 underscore 模板引擎 不是很了解,但是他却十分重要,在许多框架中 ,渲染html 都是以 模板 引擎为基础的。因此在这里分析下模板引擎的原理。

使用例子说明:

1.假如我们在body里面写成这个样子:

<ul id='fruit'>
    <li><%=fruitname%></li>
</ul>

估计很多人会很疑惑这是啥??,恩恩,其实这个就是相当于一个模板擎,<%=fruitname%>这个东西 就是模板引擎需要解析的 解析成浏览器可以认识的东西。

2.接下来我们写js

<script>
        //定义一个水果数组
    var fruit=['西瓜','草莓','蓝莓'];
        //1.获取页面中的节点
    var my=document.querySelector('#fruit')
        //2.得到节点里面的内容
    var f=document.querySelector('#fruit').innerHTML;
    
        //  定义一个解析<%=fruitname%> 模板的函数
    function jeixi(fruit,str){
            //使用正则表达式来解析 模板
         var exp=new RegExp('<%=fruitname%>');
         var li='';
            for(k in fruit){
                // console.log(k);
                li+=str;
                li=li.replace(exp,fruit[k]);

           }
       my.innerHTML=li;
    }
     jeixi(fruit,f); //调用函数 解释模板

</script>

代码演示:

20170216185853.png

我们发现原本 <li><%=fruitname%></li> 竟然全部渲染成为了 数组的内容。这个就是我们定义函数 jiexi 的功能。 当然 underscroe 模板引擎 不会写的这么简单,我这里只是分析了一下他的原理。 主要运用的就是正则表达式。

下面贴出完整的代码, 大家可以复制研究(复制可以直接运行)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <title>Document</title>
</head>
<body>
<ul id='fruit'>
    <li><%=fruitname%></li>
</ul>
</body>
<script >
    var fruit=['西瓜','草莓','蓝莓'];

    var my=document.querySelector('#fruit')
    var f=document.querySelector('#fruit').innerHTML;
    // console.log(f);
    function jeixi(fruit,str){
         var exp=new RegExp('<%=fruitname%>');
         var li='';
            for(k in fruit){
                // console.log(k);
                li+=str;
                li=li.replace(exp,fruit[k]);

           }
       my.innerHTML=li;
    }
     jeixi(fruit,f);

</script>
</html>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 179,169评论 25 708
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 15,423评论 4 61
  • 大约在七年之前,公司要投一个非常重要的标。 业主是个有钱的主,因为以前合作过,所以和我比较熟悉,许多内幕消息我得以...
    龙畅天下阅读 631评论 20 4
  • 1997年的同学录。泛黄的纸张,有时间的味道。最爱的歌曲的一栏,写着——《爱的代价》。 不清楚第一次是听这首歌是什...
    周世恩阅读 736评论 1 1
  • 什么是幸福? 今天的课绕了一圈,学霸猫借赫拉利的话说,我们所有关于“幸福”的东西,都在于我们自己怎么给我们自己讲故...
    大瑞RayD阅读 608评论 0 5

友情链接更多精彩内容