源码分析——01_template

template元素

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
//template中所有的内容都不会渲染到页面上
//所以在vue的组件模板中的内容,一开始浏览器不会解析
//其中的内容,最终是由vue来解析
    <template id="temp">
        <span>123</span>
        <img src="./xm.jpg" alt="">
    </template>
</body>
<script>
    var temp = document.querySelector("#temp")
    console.log(temp)//document-fragment  文档碎片
</script>
</html>

文档碎片

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <ul>
        <li>达姆</li>
        <li>老张</li>
        <li>老付</li>
        <li>安妮</li>
    </ul>
</body>
<script>
    window.onload=function () {
        //拿到真实的ul dom节点
        var ulNode = document.querySelector("ul");
        //创建一个文档碎片
        var fragment = document.createDocumentFragment();
        //定义一个接收子节点的变量
        var child = null;

        //firstChild 会考虑文本节点的
        //会引起界面的重新渲染
        while (ulNode.firstChild){
            //剪切操作
            fragment.appendChild(ulNode.firstChild)
        }

        //dom树中将不会再有节点  而文档碎片中会塞入所有的ul的子节点

        //children 不包含节点的
        //进行大量的dom操作  且界面不会更新  提供了dom操作的性能
        Array.from(fragment.children).forEach((item)=>{
            //当前这一行代码 会不会引起界面的重新渲染?
            //不会!!!  因为这是一次文档碎片内部的操作 并不是真实dom树种的操作
            item.innerHTML = "尚硅谷-" + item.innerHTML;
        })

        //appendChild 让 fragment作为参数  最终追加到文档中的是fragment的子节点列表 而不是fragment本身
        //会引起界面的重新渲染
        ulNode.appendChild(fragment)
    }
</script>
</html>

进阶版:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <template id="temp">
        <ul>
            <li>达姆</li>
            <li>老张</li>
            <li>老付</li>
            <li>安妮</li>
        </ul>
    </template>
</body>
<script>
    window.onload=function () {
        var temp = document.querySelector("#temp")
        var fragment = temp.content
        //firstChild 不会考虑文本节点
        Array.from(fragment.firstElementChild.children).forEach((item)=>{
            //当前这一行代码 会不会引起界面的重新渲染?
            //不会!!!  因为这是一次文档碎片内部的操作 并不是真实dom树种的操作
            item.innerHTML = "尚硅谷-" + item.innerHTML;
        })

        //appendChild 让 fragment作为参数  最终追加到文档中的是fragment的子节点列表 而不是fragment本身
        document.body.appendChild(fragment)
    }
</script>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第 1 章 系统介绍 4 1.1 系统介绍 4 1.2 系统相关对象介绍 4 1.3 系统设备介绍 4 第 2 章 现有系统分析 4 第 3 章 系统相关人员(系统)愿望列表 4 3.1 部门,人员组织结构图 4 3.2 投资人愿望列表 4 3.3 管理部门愿望列表 5 3.3.1 管理流程 5 3.3.2 质量监控 5 3.3.3 统计与分析 5 3.4 维护部门愿望列表 5 3.5 操作人员与服务人员愿望列表 5 3.5.1 操作人员组一 5 3.5.2 操作人员组二 5 3.6 外界系统愿望列表 6 3.6.1 外界系统一 6 3.6.2 外界系统二 6 第 4 章 系统功能定义 6 4.1 系统功能分类说明 6 4.2 功能分类一功能定义 7 4.2.1 使用者 7 4.2.2 业务流程 7 4.2.3 功能定义 7 4.3 功能分类二功能定义 7 4.3.1 使用者 7 4.3.2 业务流程 7 4.3.3 功能定义 7 第 5 章 系统接口定义 7 5.1 接口规范与标准 7 5.2 第一种类型接口定义 7 5.2.1 适用范围定义 7 5.2.2 功能要求 8 5.2.3 实现方式 8 5.3 第二种类型接口定义 8 5.3.1 适用范围定义 8 5.3.2 功能要求 8 5.3.3 实现方式 8 第1章系统介绍 1.1系统介绍 介绍系统功能和适用范围,系统的使用周期和建设周期。 1.2系统相关对象介绍 介绍和系统有关人,机构,系统。 1.3系统设备介绍 介绍系统内的设备或设备分类,附设备连接图。 第2章现有系统分析 分析现有系统或目前局部使用的软件的功能和缺陷。 第3章系统相关人员(系统)愿望列表 列举和系统有关系的人和系统对本系统的期望和各自要求的功能。对于每个部门和用户群需要给予适当分类,分析不同用户群和同一用户群内不同用户各自的职责和对系统的期望。 3.1部门,人员组织结构图 描述与系统相关的用户群的部门和人员组织,需要标明上下级关系和人员的组织结构。 3.2投资人愿望列表 3.3管理部门愿望列表 3.3.1管理流程 3.3.2质量监控 3.3.3统计与分析 3.4维护部门愿望列表 3.5操作人员与服务人员愿望列表 3.5.1操作人员组一 3.5.1.1工作职责 3.5.1.2愿望列表 3.5.2操作人员组二 3.5.2.1工作职责 3.5.2.2愿望列表 3.6外界系统愿望列表 分析系统之外的其他系统对功能的要求。 3.6.1外界系统一 3.6.1.1系统功能与作用 分析外界系统和本系统间的联系 3.6.1.2系统互操作方式 3.6.2外界系统

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值