layui模板引擎如何使用


本文摘自PHP中文网,作者angryTom,侵删。

如果你想了解更多关于layui的知识,可以点击:layui教程

  laytpl 是 JavScript 模板引擎,在字符解析上有着比较出色的表现,欠缺之处在于异常调试上。由于传统意义的前端模板引擎已经变得不再流行,所以 laytpl 后续可能会进行重写,目前方向暂时还没有想好,预计会在layui比较稳定后开始实施。

快速使用

  与一般的字符拼接不同的是,laytpl 的模板可与数据分离,集中把逻辑处理放在 View 层,提升代码可维护性,尤其是针对大量模板渲染的情况。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

layui.use('laytpl', function(){

     var laytpl = layui.laytpl;//直接解析字符

     laytpl('{{ d.name }}是一位公猿').render({

          name: '贤心'

          }, function(string){

              console.log(string); //贤心是一位公猿

        });

      //你也可以采用下述同步写法,将 render 方法的回调函数剔除,可直接返回渲染好的字符

      var string =  laytpl('{{ d.name }}是一位公猿').render({

          name: '贤心'

       });

     console.log(string); 

     //贤心是一位公猿

     //如果模板较大,你也可以采用数据的写法,这样会比较直观一些

     laytpl([

         '{{ d.name }}是一位公猿',

         '其它字符 {{ d.content }}  其它字符'

         ].join(''))

      });

  你也可以将模板存储在页面或其它任意位置:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

//第一步:编写模版。你可以使用一个script标签存放模板,如:

<script id="demo" type="text/html">

    <h3>{{ d.title }}</h3>

    <ul>{{#  layui.each(d.list, function(index, item){ }}

       <li>

          <span>{{ item.modname }}</span>

          <span>{{ item.alias }}:</span>

          <span>{{ item.site || '' }}</span>

        </li>

        {{#  }); }}{{#  if(d.list.length === 0){ }}无数据{{#  } }}</ul>

</script>

//第二步:建立视图。用于呈现渲染结果。

<div id="view"></div>

//第三步:渲染模版

var data = { //数据"title":"Layui常用模块","list":[{"modname":"弹层","alias":"layer","site":"layer.layui.com"},{"modname":"表单","alias":"form"}]}

var getTpl = demo.innerHTML,

view = document.getElementById('view');

laytpl(getTpl).render(data, function(html){view.innerHTML = html;});

模板语法

语法说明示例
{{ d.field }}输出一个普通字段,不转义html

1

<div>{{ d.content }}</div>

{{= d.field }}输出一个普通字段,并转义html

1

<h2>{{= d.title }}</h2>

{{# JavaScript表达式 }}JS 语句。一般用于逻辑处理。用分隔符加 # 号开头。

注意:如果你是想输出一个函数,正确的写法是:{{ fn() }},而不是:{{# fn() }}

1

2

3

4

5

6

7

8

9

{{#

var fn = function(){return '2017-08-18';

};

}}

{{#  if(true){ }}

开始日期:{{ fn() }}

{{#  }

else { }}

已截止{{#  } }}

{{! template !}}对一段指定的模板区域进行过滤,即不解析该区域的模板。注:layui 2.1.6 新增

1

<div> {{! 这里面的模板不会被解析  !}}</div>

分割符

阅读剩余部分

相关阅读 >>

layui表格数据变更的一种处理方式

layui时间控件清空之后无法正常使用的问题

layui的select框不出来怎么办

layui事件监听的方法

layui怎么重新渲染

layui框架常用输入框介绍

layui中的table方法渲染

layui滑动条如何隐藏

layui后台框架的搭建详解

layui和后端如何连起来

更多相关阅读请进入《layui》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...