JavaScript DOM 高级篇


好的兄弟🔥,这是JavaScript DOM 高级篇的核心知识点合集,包含实战常用、高频面试点、组件封装思路,🌈彩色图标+通俗解释,硬核但不烧脑:


🧠 一、MutationObserver:监听 DOM 变化

✅ 用于:监听元素增删、属性变化、文本改动等(无轮询)

const observer = new MutationObserver((mutations) => {
  console.log(mutations); // 变化记录
});
observer.observe(targetElement, {
  childList: true,
  attributes: true,
  subtree: true,
});

🔧 应用场景

  • 弹窗、评论区动态插入监听

  • 页面变化驱动业务逻辑(如统计PV)


👁️ 二、IntersectionObserver:监听元素是否进入视口

✅ 用于:懒加载、曝光埋点、吸顶菜单等场景

const observer = new IntersectionObserver((entries) => {
  entries.forEach(entry => {
    if (entry.isIntersecting) {
      console.log('元素进入可视区域');
    }
  });
});
observer.observe(document.querySelector("#target"));

🎯 三、自定义事件 & 事件总线(组件通信)

✅ 自定义事件:

const event = new CustomEvent("myEvent", { detail: { foo: 123 } });
element.dispatchEvent(event);

element.addEventListener("myEvent", e => {
  console.log(e.detail.foo); // 123
});

✅ 事件总线(Event Bus 简版):

const Bus = new EventTarget();
Bus.addEventListener("msg", e => console.log(e.detail));
Bus.dispatchEvent(new CustomEvent("msg", { detail: "hello" }));

🚀 用于多个模块/组件通信,不用硬绑定


🏗️ 四、Virtual DOM 简析

  • 真实 DOM 改动慢,操作多了性能差

  • 虚拟 DOM 是 JS 中的“对象树”,diff 算法只更新必要的部分

  • 常用于框架底层(React、Vue)

✅ 手写简单 virtualDOM 渲染器(了解原理)


🧱 五、模板引擎 + DOM 拼接优化

// 模板字符串拼接 HTML
const html = `
  <li>
    <h3>${item.title}</h3>
    <p>${item.desc}</p>
  </li>
`;
container.innerHTML += html;

📌 注意防止 XSS,动态拼接时最好用 .textContent 或 DOM 创建节点方式更安全


🧠 六、DOM 性能优化技巧

技巧 说明
📦 批量更新用 DocumentFragment 一次插入多个元素不频繁重绘
🧹 减少重排重绘 style.classList 替代逐条 .style.xx
🎯 事件节流/防抖 滚动 resize 高频事件控制回调频率
📌 事件委托替代重复绑定 子元素太多时,委托父级更轻

📦 七、封装组件化 UI(原生)

目标是:封装可复用的组件,支持属性传参、事件绑定、动态渲染👇

function createCard({ title, desc }) {
  const div = document.createElement("div");
  div.className = "card";
  div.innerHTML = `<h3>${title}</h3><p>${desc}</p>`;
  return div;
}
container.appendChild(createCard({ title: "新闻", desc: "今天下雨了" }));

📌 可以进一步加配置、事件回调,自定义生命周期,更接近类 Vue/React 的写法。


🔐 八、安全相关(XSS、DOM 污染)

危险行为 推荐做法
innerHTML 插入用户数据 🚫避免,改用 textContent
动态 script/css 注入 做好白名单过滤
点击劫持 设置 X-Frame-Options

✅ 总结:高级 DOM 的关键词

MutationObserver、IntersectionObserver、CustomEvent、Virtual DOM、
事件总线、DocumentFragment、组件封装、节流防抖、XSS防护

 


前端从基础到高级完整学习路线图

中级 JavaScript DOM知识点

评 论
请登录后再评论