JavaScript DocumentFragment

One of the lessor known but incredibly useful gems within JavaScript is the DocumentFragment.  DocumentFragments allow developers to place child elements onto an arbitrary node-like parent, allowing for node-like interactions without a true root node.  Doing so allows developers to produce structure without doing so within the visible DOM -- an increase of speed is the true advantage.  Let me show you how DocumentFragments are used!

DocumentFragment是JavaScript中最鲜为人知但有用的宝石之一。 DocumentFragments允许开发人员将子元素放在任意类似节点的父节点上,从而无需真正的根节点即可进行类似节点的交互。 这样做使开发人员无需在可见的DOM内即可生成结构- 速度的提高才是真正的优势 。 让我向您展示如何使用DocumentFragments!

DocumentFragment示例 (DocumentFragment Example)

Let's start with a UL with which we'll inject LI's to:

让我们从UL入手,我们将使用LI注入:


<ul id="list"></ul>


DOM injections and modifications are taxing, so the fewer the interactions the better;  that's where the DocumentFragment comes in.  The first step is creating the DocumentFragment:

DOM注入和修改很费力,因此交互越少越好; 这就是DocumentFragment的来源。第一步是创建DocumentFragment:


// Create the fragment
var frag = document.createDocumentFragment();


This DocumentFragment act like a pseudo-DOM node -- think of it as a virtual UL element, in this case.  Now it's time to add elements:

该DocumentFragment的作用类似于伪DOM节点-在这种情况下,请将其视为虚拟UL元素。 现在是时候添加元素了:


// Create numerous list items, add to fragment
for(var x = 0; x < 10; x++) {
	var li = document.createElement("li");
	li.innerHTML = "List item " + x;
	frag.appendChild(li);
}


Elements can be added to the DocumentFragment just as you could a normal DOM node.  Once the tree of DOM nodes is ready to hit the page, simply place the DocumentFragement into its parent (or other DOM placement functions):

可以像普通DOM节点一样将元素添加到DocumentFragment中。 一旦DOM节点树准备好进入页面,只需将DocumentFragement放入其父级(或其他DOM放置函数)中:


// Mass-add the fragment nodes to the list
listNode.appendChild(frag);


Using DocumentFragments is faster than repeated single DOM node injection and allows developers to perform DOM node operations (like adding events) on new elements instead of mass-injection via innerHTML.  Keep DocumentFragment close by when performing lots of DOM operations -- it could speed up your app considerably!

使用DocumentFragments比重复单个DOM节点注入更快,并且允许开发人员对新元素执行DOM节点操作(例如添加事件),而不是通过innerHTML进行大规模注入。 在执行许多DOM操作时,请保持DocumentFragment靠近-这可以大大加快您的应用程序的速度!

翻译自: https://davidwalsh.name/documentfragment

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值