模板渲染引擎手册

为什么使用模板渲染引擎:

  1. 在做前端进行交互的时候,经常会用到字符串拼接,使用字符串拼接的时候不但自己看着很乱很麻烦,而且不利于维护。
  2. 正因为如此才使用更加好的方法模板渲染
  3. 使用模板渲染有几点好处:

    1)直接在html里面进行写,把文字内容等,进行替换更模板语音更加方便,

    2)模板支持扩展各种方法,用于交互时做的判断,

    3)在模板里面可以写任何js代码,用于判断或者其他作用。

  4.  下面我就详细的为你介绍这个模板。

模板渲染引擎使用方法:

   1.  首先在html里面先把静态页面写好(不用解释),

  2.  写好之后再做交互的时候用用<script>标签包起来你要交互的html标签,script要有这几个属性,type="text/html",id=""(取个id名,后面会用到)

  3.  我介绍的这款模板的语法是  <%=属性%> 不多说看代码,

模板渲染引擎代码说明:

 1 <div class="box"></div>
 2 <script type="text/html" id="template">
 3     <h3><%=title%></h3>
 4     <ul>
 5         <%for (var i=0; i < list.length ; i++){%>
 6         <li><%=list[i]%></li>
 7         <%}%>
 8     </ul>
 9     <a href="javascript:void 0;"><%=""|getFollowStatus%></a>
10 </script>

那么我从第一行开始解释这个代码,

  1,第一行代码只是一个容器用来放交互内容的一个标签。

  2,2-10行是一个script标签,重点:他有一个type  和id 的属性。

  3,第三行<h3><%=title%></h3>正如上面所说,模板的语音是<%=属性%>  这个属性下面会进行介绍。

  4,做交互肯定少不了for循环了,模板里面也可以写JS代码,只要把JS代码写在<%JS代码%> 这里面就可以进行解析。不仅仅可以写for循环,只要是JS代码都可以进行解析。

  5,<%=""|getFollowStatus%>这是模板的高级用法之一,下面会详细说明。

  6,那么问题来了,如何调用呢?很简单,看代码。

 1 initRequest: function () {
 2             var that = this;
 3             $.ajax({
 4                 url: 'index.json',
 5                 type: 'post',
 6                 data: '',
 7                 dataType: 'json',
 8                 success: function (data) {
 9                     $('.box').html(that.initTemplate('template', data));
10                 },
11                 error: function () {
12                     alert("异常!");
13                 }
14             })
15         },

     说明:当请求到数据后,只需要$(元素).html(模板方法(scrip的ID,请求到的数据));

         而上文出现的title,list,等都是请求到的JSON里面的属性名(使用起来是不是很简单)。

  7,在进行交互的时候少不了需要进行处理数据,那么把这些方法写在哪里呢?
    首先模板支持扩展方法;看代码。
 1 registerTemplate: function () {
 2     this.registerTemplateFn("getFollowStatus", function (obj) {
 3         if(obj.flag){
 4             return "关注"
 5         }else{
 6             return "已关注"
 7         }
 8     });
 9 },
10 registerTemplateFn : function(key, fn) {
11     var fns = this.initTemplate.fns = this.initTemplate.fns || {};
12     fns[key] = fn;
13 },

     需要传俩个参数,第一个是个字符串,(就是上文的getFollowStatus),第二个是个function,用于处理逻辑性的问题。调用也很简单,<%=""|getFollowStatus%>  [ | ]  前面的 "" 空字符串是作为后面的参数来传进去的。操作起来是不是很简单?  function里面需要传一个参数obj    而obj就是data 上文所传进去的data数据。

注意事项:

  1. 在使用模板的时候,先注意字符串单双引号,尽量使用双引号。
  2. 如果发生了报错的问题,是代码写的问题,并不是模板本身的错误。(刚开始使用的时候可能会报一些错误,经过自己探索与学习会避免错误的。加油!!)
  3. 可以单独的进行运行函数如<%="参数"|函数名%>
  4. 注意!在<%if(true){%> 里面禁止写模板语言   错误示范:<%if(<%="参数"|函数名%>){%>  这样是错误的。
  5. 在写if判断的时候  或者for循环,必须要进行闭合标签否则报错。
  6. 闭合方式<%if(true){%>     <%}%>

  

总结:

  1,本人也在学习这个模板,此文仅是本人理解,如有其它见解请在评论区回复。

   2,模板还有各种不同的高级用法,之后本人会上传一个小demo,仅供参考。(点击下载

原文地址:https://www.cnblogs.com/hanfei-cn/p/5204337.html