js createDocumentFrag

56 篇文章 1 订阅

语法

let fragment = document.createDocumentFragment();

简介

DocumentFragments 是DOM节点(表示一个没有父级文件的最小文档对象,它被当做一个轻量版的 Document 使用)。它们不是主DOM树的一部分。通常的用例是创建文档片段,将元素附加到文档片段,然后将文档片段附加到DOM树。在DOM树中,文档片段被其所有的子元素所代替。
因为文档片段存在于内存中,并不在DOM树中,它的变化不会引起DOM树的重新渲染的操作(reflow) ,所以将子元素插入到文档片段时不会引起页面回流(对元素位置和几何上的计算)。因此,使用文档片段通常会带来更好的性能。

示例

渲染一个列表,有三种写法

  1. 直接appendChild要添加的元素
var _ul = document.getElementById('ul'); 
var fruits = ['香蕉',"苹果","橘子"];
fruits.forEach(function (fruit) {
  var _li = document.createElement('_li');
  _li.innerText = fruit;
  _ul.appendChild(_li);
});
  1. 用拼接字符串
var _ul = document.getElementById('ul'); 
var fruits = ['香蕉',"苹果","橘子"];
var str = ""
fruits.forEach(function (fruit) {
  str+= `<li>${fruit}</li>`
});
_ul.innerHTML = str;
  1. 用createDocumentFragment实现
var _ul = document.getElementById('ul'); 
var fragment = document.createDocumentFragment();
var fruits = ['香蕉',"苹果","橘子"];
fruits.forEach(function (fruit) {
  var _li = document.createElement('_li');
  _li.innerText = fruit;
  fragment.appendChild(_li);
});
_ul.appendChild(fragment);

他们实现的功能都是一样的,但是从性能上看的话,第一种性能最低,因为它需要重复操作DOM,第二种性能最高(测试时间得来的结果),第三种性能中等,根据不同的需求可以选择第二种和第三种

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值