转发表明:创作者难于,需经许可,婉拒任何人方式的转发
Web合作开发急速产业发展,掌控新一代的态势和最差课堂教学对每人合作开发人员而言都非常重要。Web合作开发的最重要各方面众所周知是采用文件格式第一类数学模型(DOM)。在责任编辑中,他们将深入细致探讨10个要掌控的DOM基本功和基本功,备有标识符实例,这将协助您正式成为更高效率、更有效率的合作开发人员。
1、掌控DOM操作方式的基本知识
在深入细致自学高阶DOM基本功以后,介绍基本知识是非常重要的。熟识核心理念DOM基本概念,如优先选择原素、修正特性和结点DOM树。这将使您更容易认知和同时实现更高阶的控制技术。
// 透过ID优先选择原素 const element = document.getElementById(myElement); // 修正特性element.setAttribute(data-custom, value); // 修正式样特性以将色调增设为黄色 element.style.color = red; // 结点DOM树 constparent = element.parentNode;const children = element.childNodes;2、采用querySelector和querySelectorAll方式
querySelector和querySelectorAll方式是优先选择DOM原素的强悍辅助工具。它容许您采用CSS优先实例来功能定位原素,进而更随心所欲地搜寻和操作方式HTML文件格式中的某一原素。
// 优先选择一般而言原素 constelement =document.querySelector(.myClass); // 优先选择数个原素 const elements = document.querySelectorAll(.myClass);3、利用事件委托
事件委托是一种控制技术,它容许您透过将一般而言事件监听器附加到父原素来更有效率地处理事件。这减少了所需的事件监听器数量,并提高了性能,特别是在有许多原素的大型应用程序中。
document.addEventListener(‘click’,function(event) { if (event.target.matches(‘.myClass’)) { console.log(‘Element clicked:’, event.target); } });4、利用classList API
classList API提供了一种方便的方式来在DOM原素上添加、删除和切换CSS类。这使得更容易地操作方式原素的外观和行为,而无需依赖内联式样或繁琐的字符串操作方式。
// 优先选择一个原素 const element = document.querySelector(.myClass); // 添加一个类element.classList.add(newClass); // 删除一个类 element.classList.remove(myClass); // 切换一个类element.classList.toggle(active);5、采用createElement和appendChild方式创建动态内容
在创建动态内容时,采用createElement和appendChild方式生成新的DOM原素并将它们添加到DOM树中。这种方式比采用innerHTML或其他基于字符串的方式更高效率且更易于维护。
const newElement = document.createElement(‘div’); newElement.textContent = ‘Hello, world!’;document.body.appendChild(newElement);6、优化DOM访问和操作方式
访问和操作方式DOM可能会很慢,特别是在大型应用程序中。为了提高性能,请透过将原素缓存到变量中最小化DOM访问,并采用文件格式片段或requestAnimationFrame API批量更新。
const elements = document.querySelectorAll(.myClass); const fragment = document.createDocumentFragment(); elements.forEach(element => { const newElement = document.createElement(span); newElement.textContent = Updated; fragment.appendChild(newElement); });document.body.appendChild(fragment);7、认知节点和原素之间的区别
在DOM中,节点是表示文件格式树的一部分的通用第一类,而原素是表示HTML标签的某一类型的节点。认知这两个基本概念之间的区别对于有效率地采用DOM非常重要。
const element = document.querySelector(.myClass); const node = element.firstChild; console.log(Element:, element); console.log(Node:, node);8、采用自定义数据特性
自定义数据特性容许您在DOM原素上存储额外的信息,而不会影响它的表现或行为。这对于存储状态、配置或其他须要在JavaScript标识符中访问的元数据非常有用。
<div data-custom=“value”>My element</div>const element = document.querySelector([data-custom]); constcustomValue = element.getAttribute(data-custom); console.log(Custom value:, customValue);9、介绍Shadow DOM
Shadow DOM是一种强悍的功能,容许您在原素内部创建封装的DOM树。这对于创建具有隔离式样和行为的可重用组件非常有用,使您的标识符更加模块化和易于维护。
class MyComponent extends HTMLElement { constructor() { super(); const shadowRoot = this.attachShadow({ mode: ‘open’ }); shadowRoot.innerHTML =` <style> span { color: red; } </style> <span>Hello, world!</span> `; } } customElements.define(my-component, MyComponent);这段标识符是一个采用Shadow DOM创建自定义Web组件的实例。这个组件的名称是my-component,它继承自HTMLElement类。
在MyComponent的构造函数中,调用了父类HTMLElement的构造函数,并在其中透过attachShadow()方式创建了一个Shadow DOM。attachShadow()方式接受一个配置第一类,{ mode: open }指定了Shadow DOM的模式为“open”,表示可以从外部访问Shadow DOM。
接下来,采用模板字符串在Shadow DOM中定义了式样和内容。在式样中,指定了span原素的文本色调为黄色。在内容中,创建了一个span原素并显示文本“Hello, world!”。
最后,透过customElements.define()方式定义了这个自定义组件的名称和类。在这个例子中,名称为my-component,类为MyComponent。
您可以在HTML文件格式中采用<my-component>标签来调用这个自定义组件。例如:
<!DOCTYPE html> <html> <head> <meta charset=“UTF-8”> <title>My Component Demo</title> </head> <body> <my-component></my-component> <script src=“my-component.js”></script> </body> </html>在上面的实例中,透过<my-component>标签调用了自定义组件,它将显示“Hello, world!”文本。须要注意的是,在采用自定义组件以后,须要先将定义组件的JavaScript文件(如上例中的my-component.js)引入到HTML文件格式中。
10、熟识<template>标签
<template>标签是HTML5的一个强悍功能,它容许您定义可重用的HTML标记块。在处理动态内容或创建自定义组件时,这尤其有用。透过采用<template>标签,您可以为内容定义模板,然后根据须要克隆并插入到DOM中。这种方式比采用基于字符串的方式生成HTML更高效率和可维护。
<template id=”myTemplate”> <div class=“myClass”>Hello, world!</div> </template>const template = document.getElementById(myTemplate); const content = template.content.cloneNode(true); document.body.appendChild(content);结束
掌控DOM是每个Web合作开发人员都要具备的关键技能。透过遵循这10个基本功和基本功,备有标识符实例,您将正式成为更高效率、更有效率和更有知识的合作开发人员。保持好奇心,持续自学,并不要忘记与Web合作开发社区中的其他人撷取您的知识。祝您编码愉快!
在文章结尾,我想提醒您,享最大的动力。我会持续输出更多内容,敬请期待。
原文:
https://medium.com/dev-genius/title-10-must-know-dom-tips-and-tricks-for-every-developer-in-2023-ae2d0c09acbb作者:Erik Newland
非直接翻译,有自行改编和添加部分,翻译水平有限,难免有疏漏,欢迎指正