模板引擎前的三种常见的将js数据转换为视图的方法

众所周知:模板引擎是将数据转化为视图的一种解决方案在此之前又有哪些呢?

body 结构

<body>
    <ul id="list">

    </ul>
</body>

纯DOM 法

    var arr = [
        {"name":"小明","age":12,"sex":"男"},
        {"name":"小红","age":11,"sex":"女"},
        {"name":"小强","age":13,"sex":"男"}
    ]
    // 纯dom很笨拙 这里只简单演示
    // 创建文档碎片 减少往真实dom中添加元素的次数,减少渲染次数 优化性能
    const frag = document.createDocumentFragment()

    const list = document.querySelector('#list')
    
    for (let i = 0; i < arr.length; i++) {
        let li = document.createElement('li')
        li.innerHTML = arr[i].name
        frag.appendChild(li)
    }
    list.appendChild(frag)

数组join法

因为在模板字符串之前字符串换行是非常麻烦的

所以就可以通过将字符串放进一个数组里面,再通过数组的Join方法进行字符串的整合

注: 在vscode 中按住alt 键 使用多行光标就能快速给标签添加' 和 逗号

    var arr = [
        {"name":"小明","age":12,"sex":"男"},
        {"name":"小红","age":11,"sex":"女"},
        {"name":"小强","age":13,"sex":"男"}
    ]
    // 创建文档碎片 减少往真实dom中添加元素的次数,减少渲染次数 优化性能
    const frag = document.createDocumentFragment()

    const list = document.querySelector('#list')

    for (let i = 0; i < arr.length; i++) {
        let li = document.createElement('li')
            li.innerHTML = [
            '<li>',
                '<p>'+arr[i].name+'</p>',
                '<h2><span>'+arr[i].age+'</span>',
                    '<span>'+arr[i].sex+'</span>',
                '</h2>',
            '</li>',
            ].join('')
        frag.appendChild(li)
    }
    list.appendChild(frag)

es6 模板字符串法

这个也是目前非模板引擎中最方便的

只需要在反引号中添加${} 就可以操作变量了

    var arr = [
        {"name":"小明","age":12,"sex":"男"},
        {"name":"小红","age":11,"sex":"女"},
        {"name":"小强","age":13,"sex":"男"}
    ]
    // 纯dom很笨拙 这里只简单演示
    // 创建文档碎片 减少往真实dom中添加元素的次数,减少渲染次数 优化性能
    const frag = document.createDocumentFragment()

    const list = document.querySelector('#list')

    for (let i = 0; i < arr.length; i++) {
        let li = document.createElement('li')
            li.innerHTML = `
            <li>${arr[i].name}</li>
            <p>已经</p>
            <span>${arr[i].age}岁了</span>
            <span>性别${arr[i].sex}</span>
            `
        frag.appendChild(li)
    }
    list.appendChild(frag)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值