附录9-模板引擎

模板引擎可以根据程序员指定的模板结构和数据自动生成一个完整的HTML页面,模板引擎实质上还是一个外部文件,引入后可以便捷的进行开发,它很像后端框架中的模板层

模板引擎的原理是正则出指定的位置,然后替换数据

目录

1 传统方式渲染页面

2 模板引擎渲染页面

2.1 下载art-template

2.2 使用变量

2.3 原文输出

2.4 判断

2.5 循环

2.6 过滤器

3 实现原理

1 传统方式渲染页面

现在我想将这些数据

附录9-模板引擎

搞成这样

附录9-模板引擎

我们需要这样写


    Document

    var data = {
        title:'<h3>用户信息</h3>',
        name:'zs',
        age:20,
        isVIP:true,
        regTime:new Date(),
        hobby:['吃饭','睡觉','打豆豆']
    }

    document.querySelector('.title').innerHTML = data.title
    document.querySelector('.name').innerHTML = data.name
    document.querySelector('.age').innerHTML = data.age
    if (data.isVIP) {
        document.querySelector('.VIP').innerHTML = '是'
    }
    else {
        document.querySelector('.VIP').innerHTML = '否'
    }
    document.querySelector('.time').innerHTML = data.regTime
    for (i in data.hobby) {
        li = document.createElement('li')
        li.innerHTML = data.hobby[i]
        document.querySelector('ul').appendChild(li)
    }

2 模板引擎渲染页面

我们以art-template为例认识一下模板引擎,art-template官网地址 art-template

2.1 下载art-template

可以在这里下载 art-template的源码 GitHub – aui/art-template: High performance JavaScript templating engine

下载解压后可以在lib中找到template-web.js,我们在需要的时候用script的src进行引用就可以了

附录9-模板引擎

2.2 使用变量

使用模板要用到script标签的type属性,script默认的type属性是text/javascript,使用模板时,我们需要创建一个type为text/html的script标签

附录9-模板引擎

之后定义data,然后使用template方法,template()第一个参数是类型为type的script的id,第二个参数是要传入的数据。

之后在类型为type的script中用{{}}的方式引入要使用的变量

附录9-模板引擎

emplate()的返回值是html字符串

附录9-模板引擎

最后将template()的返回值渲染到页面上就可以了

附录9-模板引擎

除了使用{{value}}直接引用变量,还有下面这几种方式可以使用变量

附录9-模板引擎

2.3 原文输出

当调用的变量中是html字符串的时候,如果仅使用{{}}调用变量会渲染成这样

附录9-模板引擎

附录9-模板引擎

这个时候我们可以在变量前加入@以进行原文输出

附录9-模板引擎

这样就可以达到我们想要的效果了

附录9-模板引擎

2.4 判断

附录9-模板引擎

在判断中else if与else都是可以写也可以不写的

附录9-模板引擎

2.5 循环

附录9-模板引擎

{{$index}}是索引,{{$value}}是值

附录9-模板引擎

2.6 过滤器

定义过滤器的语法是这样的

附录9-模板引擎

使用过滤器的语法是这样的

附录9-模板引擎

我们下面做个例子,我们之前搞的时间是这样的

附录9-模板引擎

我们现在只获取其中的年月日

附录9-模板引擎

附录9-模板引擎

3 实现原理

模板引擎的原理是正则出指定的位置,然后替换数据

首先定义一个函数

function my_template(id,data) {
    a = document.getElementById(id).innerHTML
    var b = /{{\s*([a-zA-Z]+)\s*}}/

    var result = null
    while (result = b.exec(a)) {
        a = a.replace(result[0],data[result[1]])
    }

    return a
}

然后引入文件,定义模板,定义数据,调用函数,渲染页面

附录9-模板引擎

这样就可以显示出来了

附录9-模板引擎

Original: https://blog.csdn.net/potato123232/article/details/127816276
Author: Suyuoa
Title: 附录9-模板引擎

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/652657/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球