UNPKG

@vanilla-dom/core

Version:

轻量级 DOM 渲染引擎,VNode 到 DOM 转换

60 lines (59 loc) 2.06 kB
//#region src/dom-utils.ts /** * DOM 操作工具集 * 提供高效的 DOM 创建、更新、插入等操作 */ function createElement(tag) { return document.createElement(tag); } function createTextNode(text) { return document.createTextNode(text); } function createFragment() { return document.createDocumentFragment(); } function insertBefore(parent, newNode, referenceNode) { parent.insertBefore(newNode, referenceNode); } function appendChild(parent, node) { parent.appendChild(node); } function removeNode(node) { const parent = node.parentNode; if (parent) parent.removeChild(node); } function replaceNode(oldNode, newNode) { const parent = oldNode.parentNode; if (parent) parent.replaceChild(newNode, oldNode); } function clearChildren(element) { while (element.firstChild) element.removeChild(element.firstChild); } function setProperty(element, key, value) { if (key === "children") return; if (key in element) element[key] = value; else element.setAttribute(key, String(value)); } function removeProperty(element, key) { if (key === "children") return; if (key in element) element[key] = null; else element.removeAttribute(key); } function updateProperty(element, key, newValue, oldValue) { if (newValue === oldValue) return; if (newValue == null) removeProperty(element, key); else setProperty(element, key, newValue); } function setEvents(element, events) { for (const [eventType, handler] of Object.entries(events)) element.addEventListener(eventType, handler); } function removeEvents(element, events) { for (const [eventType, handler] of Object.entries(events)) element.removeEventListener(eventType, handler); } function updateEvents(element, newEvents, oldEvents) { if (oldEvents) removeEvents(element, oldEvents); if (newEvents) setEvents(element, newEvents); } //#endregion export { appendChild, clearChildren, createElement, createFragment, createTextNode, insertBefore, removeEvents, removeNode, removeProperty, replaceNode, setEvents, setProperty, updateEvents, updateProperty }; //# sourceMappingURL=dom-utils.js.map