导购网站开发要多少钱,做门头上那个网站申报,多米诺网站建设,邢台市路桥建设公司网站1. 一键防抖 / 节流#xff0c;告别重复触发高频操作#xff08;按钮点击、输入框检索、滚动监听#xff09;必用#xff0c;避免多次执行函数#xff1a;javascript运行// 防抖#xff1a;停止操作后n秒执行#xff08;适合输入检索#xff09;
const debounce (fn, …1. 一键防抖 / 节流告别重复触发高频操作按钮点击、输入框检索、滚动监听必用避免多次执行函数javascript运行// 防抖停止操作后n秒执行适合输入检索 const debounce (fn, delay) { let timer null; return (...args) { clearTimeout(timer); timer setTimeout(() fn.apply(this, args), delay); }; }; // 节流n秒内仅执行1次适合滚动/resize const throttle (fn, delay) { let flag true; return (...args) { if (!flag) return; flag false; setTimeout(() { fn.apply(this, args); flag true; }, delay); }; }; // 用法输入框检索防抖 input.addEventListener(input, debounce(() { console.log(检索数据); }, 500));2. 图片懒加载秒提首屏速度无需插件原生loadinglazy 降级方案减少首屏请求html预览!-- 原生懒加载兼容现代浏览器 -- img src占位图.png data-src真实图片.jpg loadinglazy alt示例 !-- 兼容低版本浏览器JS兜底 -- script const lazyImgs document.querySelectorAll(img[data-src]); const observer new IntersectionObserver((entries) { entries.forEach(entry { if (entry.isIntersecting) { const img entry.target; img.src img.dataset.src; observer.unobserve(img); // 加载后停止监听 } }); }); lazyImgs.forEach(img observer.observe(img)); /script3. 巧用 CSS 变量统一样式维护告别重复改样式一键修改主题 / 尺寸适配多端更高效css/* 定义全局变量 */ :root { --primary-color: #409eff; /* 主色 */ --font-size: 14px; /* 基础字号 */ --border-radius: 4px; /* 圆角 */ } /* 使用变量 */ .button { background: var(--primary-color); font-size: var(--font-size); border-radius: var(--border-radius); } /* 动态修改JS */ document.documentElement.style.setProperty(--primary-color, #67c23a);4. 表单快速校验少写冗余代码用原生Constraint Validation API无需第三方库也能做基础校验html预览form idmyForm input typeemail required placeholder邮箱 idemail input typepassword minlength6 required placeholder密码 idpwd button typesubmit提交/button /form script myForm.addEventListener(submit, (e) { e.preventDefault(); // 校验整个表单 if (!myForm.checkValidity()) { // 显示原生提示 myForm.reportValidity(); return; } console.log(校验通过提交数据); }); /script5. 控制台高效调试告别 console.log 堆精准定位问题减少无用日志调试完一键清空javascript运行// 1. 分组打印清晰区分模块 console.group(用户信息); console.log(姓名张三); console.log(年龄25); console.groupEnd(); // 2. 样式打印重点信息高亮 console.log(%c 接口报错, color: red; font-size: 16px;, 请求超时); // 3. 一键清空所有console调试完执行 console.clear(); // 4. 打印DOM元素属性 console.dir(document.querySelector(.button));6. 本地存储封装避免数据丢失统一处理localStorage/sessionStorage兼容 JSON 数据防止存取值出错javascript运行const storage { // 存数据自动转JSON set(key, value) { localStorage.setItem(key, JSON.stringify(value)); }, // 取数据自动解析JSON get(key) { const val localStorage.getItem(key); return val ? JSON.parse(val) : null; }, // 删除数据 remove(key) { localStorage.removeItem(key); }, // 清空所有 clear() { localStorage.clear(); } }; // 用法 storage.set(user, { name: 张三, id: 1 }); console.log(storage.get(user)); // { name: 张三, id: 1 }7. 快速适配暗黑模式一行切换利用 CSS 变量 媒体查询无需两套样式适配系统 / 手动切换css/* 浅色模式 */ :root { --bg-color: #fff; --text-color: #333; } /* 暗黑模式系统自动切换 */ media (prefers-color-scheme: dark) { :root { --bg-color: #1e1e1e; --text-color: #fff; } } body { background: var(--bg-color); color: var(--text-color); }javascript运行// 手动切换暗黑模式 const switchDark () { document.documentElement.classList.toggle(dark); // 结合CSS.dark { --bg-color: #1e1e1e; --text-color: #fff; } };8. 减少重排重绘优化页面性能避免频繁操作 DOM批量处理 离线渲染提升页面流畅度javascript运行// 反例频繁操作DOM触发多次重排 const list document.getElementById(list); for (let i 0; i 100; i) { list.innerHTML li项${i}/li; } // 正例批量处理仅触发1次重排 const fragment document.createDocumentFragment(); for (let i 0; i 100; i) { const li document.createElement(li); li.textContent 项${i}; fragment.appendChild(li); } list.appendChild(fragment); // 额外技巧修改样式前先隐藏元素改完再显示 element.style.display none; // 批量修改样式... element.style.display block;