最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

前端開發(fā)讓代碼更簡(jiǎn)潔、效率翻倍的10個(gè)實(shí)用小技巧總結(jié)

 更新時(shí)間:2026年05月20日 09:45:03   作者:維他AD鈣  
這篇文章主要介紹了前端開發(fā)讓代碼更簡(jiǎn)潔、效率翻倍的10個(gè)實(shí)用小技巧,這些技巧都是在真實(shí)業(yè)務(wù)中反復(fù)驗(yàn)證,能顯著提升開發(fā)效率或解決常見痛點(diǎn)的做法,需要的朋友可以參考下

前言

在前端日常開發(fā)中,我們總會(huì)遇到一些 “不起眼” 的場(chǎng)景:比如處理 DOM 元素、格式化數(shù)據(jù)、優(yōu)化樣式等。如果用常規(guī)方法,可能需要寫大量冗余代碼;但掌握一些小技巧后,不僅能減少代碼量,還能提升運(yùn)行效率。本文整理了 10 個(gè)高頻實(shí)用技巧,覆蓋 DOM、JS、CSS 等多個(gè)領(lǐng)域,每個(gè)技巧都附帶可直接復(fù)用的代碼示例。

一、DOM 操作:少寫循環(huán),用 API 簡(jiǎn)化操作

1. 一次性添加多個(gè) DOM 元素(避免頻繁重排)

頻繁調(diào)用appendChild會(huì)導(dǎo)致瀏覽器反復(fù)重排 DOM,性能較差。可以先用DocumentFragment暫存元素,最后一次性插入頁(yè)面。

// 常規(guī)寫法:頻繁插入,性能差

const container = document.getElementById("container");
for (let i = 0; i < 10; i++) {
  const div = document.createElement("div");
  div.textContent = `Item ${i}`;
  container.appendChild(div); // 每次循環(huán)都觸發(fā)重排
}

// 優(yōu)化寫法:用DocumentFragment暫存

const fragment = document.createDocumentFragment(); // 不占DOM樹,僅用于暫存
for (let i = 0; i < 10; i++) {
  const div = document.createElement("div");
  div.textContent = `Item ${i}`;
  fragment.appendChild(div); // 暫存,不觸發(fā)重排
}
container.appendChild(fragment); // 一次性插入,僅觸發(fā)1次重排

2. 快速清空 DOM 元素(3 種高效方式)

清空容器內(nèi)所有子元素,無(wú)需遍歷刪除,這 3 種方式各有優(yōu)勢(shì):

const container = document.getElementById("container");

// 方式1:最簡(jiǎn)潔(推薦)

container.innerHTML = "";

// 方式2:性能更優(yōu)(適合大量子元素)

while (container.firstChild) {
  container.removeChild(container.firstChild);
}

// 方式3:利用空元素替換(較靈活)

container.replaceChildren(); // ES2022新增,無(wú)參數(shù)時(shí)清空所有子元素

二、JavaScript:一行代碼解決常見需求

3. 數(shù)組去重(無(wú)需循環(huán),用 Set 特性)

Set天然不允許重復(fù)元素,結(jié)合Array.from或擴(kuò)展運(yùn)算符,一行代碼即可實(shí)現(xiàn)數(shù)組去重。

const arr = [1, 2, 2, 3, 3, 3];

// 方式1:擴(kuò)展運(yùn)算符 + Set

const uniqueArr1 = [...new Set(arr)]; // [1, 2, 3]

// 方式2:Array.from + Set

const uniqueArr2 = Array.from(new Set(arr)); // [1, 2, 3]

?? 注意:此方法對(duì)引用類型數(shù)組(如[{id:1}, {id:1}])無(wú)效,引用類型需額外判斷id等唯一標(biāo)識(shí)。

4. 快速生成指定范圍的數(shù)組(替代 for 循環(huán))

需要生成 “從 n 到 m” 的連續(xù)數(shù)組(如分頁(yè)頁(yè)碼、年份列表),用Array.fromArray.keys簡(jiǎn)化:

// 需求1:生成 [1, 2, 3, 4, 5]

const arr1 = Array.from({ length: 5 }, (_, i) => i + 1);

// 需求2:生成 [2020, 2021, 2022, 2023, 2024]

const startYear = 2020;
const arr2 = Array.from({ length: 5 }, (_, i) => startYear + i);

// 需求3:生成 [0, 1, 2, 3, 4](簡(jiǎn)單場(chǎng)景)

const arr3 = [...Array(5).keys()];

5. 格式化時(shí)間:無(wú)需第三方庫(kù),用 Intl.DateTimeFormat

前端格式化時(shí)間(如 “2024-05-20”“2024 年 5 月 20 日 14:30”),無(wú)需引入moment.jsday.js,原生Intl.DateTimeFormat足夠滿足需求。

const date = new Date("2024-05-20T14:30:00");

// 格式1:2024-05-20

const format1 = new Intl.DateTimeFormat("zh-CN", {
  year: "numeric",
  month: "2-digit",
  day: "2-digit",
}).format(date); // "2024-05-20"

// 格式2:2024年5月20日 14:30

const format2 = new Intl.DateTimeFormat("zh-CN", {
  year: "numeric",
  month: "long",
  day: "numeric",
  hour: "2-digit",
  minute: "2-digit",
}).format(date); // "2024年5月20日 14:30"

// 格式3:英文格式 May 20, 2024

const format3 = new Intl.DateTimeFormat("en-US", {
  year: "numeric",
  month: "long",
  day: "numeric",
}).format(date); // "May 20, 2024"

6. 深拷貝對(duì)象:簡(jiǎn)單場(chǎng)景用結(jié)構(gòu)化克隆

淺拷貝用Object.assign或擴(kuò)展運(yùn)算符,但深拷貝(處理嵌套對(duì)象 / 數(shù)組)可優(yōu)先用原生structuredClone,無(wú)需手寫遞歸或引入lodash.cloneDeep。

const obj = {
  name: "張三",
  age: 25,
  hobbies: ["籃球", "游戲"],
  address: { city: "北京", district: "朝陽(yáng)區(qū)" },
};

// 深拷貝(支持對(duì)象、數(shù)組、Date、RegExp等,不支持函數(shù))

const deepCloneObj = structuredClone(obj);

// 修改拷貝后的屬性,原對(duì)象不受影響

deepCloneObj.hobbies.push("讀書");
deepCloneObj.address.city = "上海";
console.log(obj.hobbies); // ["籃球", "游戲"](原對(duì)象未變)
console.log(obj.address.city); // "北京"(原對(duì)象未變)

?? 注意:structuredClone不支持拷貝函數(shù)、SymbolMap(部分場(chǎng)景),復(fù)雜場(chǎng)景仍需用lodash.cloneDeep

三、CSS:簡(jiǎn)化樣式,提升可維護(hù)性

7. 用 CSS 變量實(shí)現(xiàn) “一鍵換膚”(替代大量類名切換)

傳統(tǒng)換膚需要切換多個(gè)類名,用 CSS 變量(Custom Properties)可直接修改根元素變量,所有關(guān)聯(lián)樣式自動(dòng)更新。

/* 1. 定義CSS變量(根作用域) */
:root {
  --primary-color: #4285f4; /* 默認(rèn)主題色:藍(lán)色 */
  --bg-color: #ffffff; /* 默認(rèn)背景色:白色 */
  --text-color: #333333; /* 默認(rèn)文字色:深灰 */
}
/* 2. 深色主題變量(通過類名激活) */
.dark-theme {
  --primary-color: #8ab4f8; /* 深色主題色:淺藍(lán) */
  --bg-color: #1a1a1a; /* 深色背景色:黑色 */
  --text-color: #f5f5f5; /* 深色文字色:白色 */
}
/* 3. 使用CSS變量(關(guān)聯(lián)到具體樣式) */
.button {
  background-color: var(--primary-color);
  color: white;
  padding: 8px 16px;
  border: none;
  border-radius: 4px;
}
.container {
  background-color: var(--bg-color);
  color: var(--text-color);
  min-height: 100vh;
  padding: 20px;
}
// 4. 切換主題(只需添加/移除類名)

const toggleTheme = () => {
  document.documentElement.classList.toggle("dark-theme");
};

// 點(diǎn)擊按鈕切換主題

document.getElementById("theme-toggle").addEventListener("click", toggleTheme);

8. 用clamp()實(shí)現(xiàn)響應(yīng)式字體(告別媒體查詢)

傳統(tǒng)響應(yīng)式字體需要寫多個(gè)@media查詢,clamp(min, preferred, max)可自動(dòng)在 “最小 - 最大” 范圍內(nèi)自適應(yīng),根據(jù)屏幕寬度動(dòng)態(tài)調(diào)整。

/* 常規(guī)寫法:多個(gè)媒體查詢 */

.title {
  font-size: 24px;
}

@media (min-width: 768px) {
  .title {
    font-size: 32px;
  }
}

@media (min-width: 1200px) {
  .title {
    font-size: 40px;
  }
}

/* 優(yōu)化寫法:用clamp()一行實(shí)現(xiàn) */

.title {
  /* 最小24px,首選(屏幕寬度/30),最大40px */
  font-size: clamp(24px, calc(100vw / 30), 40px);
}

原理:clamp(a, b, c)表示 “取 b 的值,但不小于 a,不大于 c”。結(jié)合calc(100vw / N),可讓字體隨屏幕寬度成比例變化。

9. 用object-fit處理圖片拉伸(避免變形)

圖片在固定尺寸容器中容易拉伸變形,object-fit可控制圖片的填充方式,類似背景圖的background-size。

/* 容器固定尺寸 */

.img-container {
  width: 300px;
  height: 200px;
  border: 1px solid #eee;
  overflow: hidden; /* 隱藏超出容器的部分 */
}

/* 處理圖片:保持比例,填充容器(常用) */

.img-container img {
  width: 100%;
  height: 100%;
  object-fit: cover; /* 類似background-size: cover,可能裁剪部分圖片 */
  /* 其他可選值:contain(完整顯示,可能留空白)、fill(拉伸填充,不推薦) */
}

四、開發(fā)效率:工具與調(diào)試技巧

10. 用console.table()優(yōu)雅打印數(shù)組 / 對(duì)象

調(diào)試時(shí)打印數(shù)組或?qū)ο螅?code>console.log會(huì)顯示一堆文本,console.table可將數(shù)據(jù)以表格形式展示,更易讀。

// 示例1:打印數(shù)組

const users = [
  { name: "張三", age: 25, role: "前端" },
  { name: "李四", age: 28, role: "后端" },
  { name: "王五", age: 30, role: "產(chǎn)品" },
];

// 常規(guī)打印:文本形式,不易對(duì)比

console.log(users);

// 優(yōu)化打印:表格形式,清晰直觀

console.table(users);

打印效果:

(index)nameagerole
0張三25前端
1李四28后端
2王五30產(chǎn)品

還可指定列顯示:console.table(users, ['name', 'role'])(只顯示姓名和角色)。

總結(jié):小技巧,大價(jià)值

這些技巧的核心不是 “炫技”,而是 “用更合理的方式解決問題”:

  • DOM 操作技巧:減少重排,提升性能;

  • JS 代碼技巧:利用原生 API,減少冗余;

  • CSS 技巧:提升可維護(hù)性,簡(jiǎn)化響應(yīng)式;

  • 調(diào)試技巧:讓數(shù)據(jù)更直觀,提高調(diào)試效率。

前端開發(fā)中,80% 的需求都是常規(guī)場(chǎng)景,掌握這些高頻小技巧,能幫你在日常開發(fā)中節(jié)省大量時(shí)間,把精力集中在更復(fù)雜的業(yè)務(wù)邏輯上。建議收藏本文,遇到對(duì)應(yīng)場(chǎng)景時(shí)直接復(fù)用,逐步將這些技巧內(nèi)化為自己的開發(fā)習(xí)慣。

到此這篇關(guān)于前端開發(fā)讓代碼更簡(jiǎn)潔、效率翻倍的10個(gè)實(shí)用小技巧總結(jié)的文章就介紹到這了,更多相關(guān)前端開發(fā)實(shí)用小技巧內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JavaScript原生數(shù)組Array常用方法

    JavaScript原生數(shù)組Array常用方法

    在入門Vue時(shí), 列表渲染一節(jié)中提到數(shù)組的變異方法, 其中包括push(), pop(), shift(), unshift(), splice(), sort(), reverse(), 而concat()和slice()不屬于變異方法. 在這里就復(fù)習(xí)一下Array所提供的這幾個(gè)方法的使用
    2017-04-04
  • 微信小程序?qū)崿F(xiàn)左滑刪除效果源碼

    微信小程序?qū)崿F(xiàn)左滑刪除效果源碼

    這篇文章主要給大家介紹了關(guān)于微信小程序?qū)崿F(xiàn)左滑刪除效果的相關(guān)資料,左滑刪除效果在app的交互方式中十分流行,比如全民應(yīng)用微信,文中給出了詳細(xì)的實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2023-08-08
  • uni-app?中清除定時(shí)器實(shí)現(xiàn)方法詳解

    uni-app?中清除定時(shí)器實(shí)現(xiàn)方法詳解

    這篇文章主要為大家介紹了uni-app?中清除定時(shí)器實(shí)現(xiàn)方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • JS中如何創(chuàng)建私有變量示例詳解

    JS中如何創(chuàng)建私有變量示例詳解

    這篇文章主要介紹了JS中如何創(chuàng)建私有變量的相關(guān)資料,文中介紹了四種私有變量實(shí)現(xiàn)方式,每種方法都給出了詳細(xì)詳細(xì)的代碼示例,需要的朋友可以參考下
    2025-05-05
  • 微信小程序?qū)崿F(xiàn)拉鏈?zhǔn)降幕瑒?dòng)驗(yàn)證

    微信小程序?qū)崿F(xiàn)拉鏈?zhǔn)降幕瑒?dòng)驗(yàn)證

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)拉鏈?zhǔn)降幕瑒?dòng)驗(yàn)證,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • 11個(gè)JavaScript中自動(dòng)化執(zhí)行日常工作的殺手腳本

    11個(gè)JavaScript中自動(dòng)化執(zhí)行日常工作的殺手腳本

    這篇文章主要來(lái)和大家分享?11?個(gè)?JavaScript?腳本,它們可以幫助您自動(dòng)化日常工作的各個(gè)方面,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下
    2025-06-06
  • 跟我學(xué)習(xí)javascript的this關(guān)鍵字

    跟我學(xué)習(xí)javascript的this關(guān)鍵字

    跟我學(xué)習(xí)javascript的this關(guān)鍵字,this是動(dòng)態(tài)綁定,或稱為運(yùn)行期綁定的,這就導(dǎo)致 JavaScript中的this關(guān)鍵字有能力具備多重含義,帶來(lái)靈活性的同時(shí),也為初學(xué)者帶來(lái)不少困惑
    2015-11-11
  • JS計(jì)算網(wǎng)頁(yè)停留時(shí)間代碼

    JS計(jì)算網(wǎng)頁(yè)停留時(shí)間代碼

    這篇文章主要介紹了JS計(jì)算網(wǎng)頁(yè)停留時(shí)間的具體實(shí)現(xiàn),需要的朋友可以參考下
    2014-04-04
  • Active控件問題小結(jié)(附解決辦法)

    Active控件問題小結(jié)(附解決辦法)

    這篇文章主要介紹了Active控件問題小結(jié)(附解決辦法)的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-06-06
  • JS計(jì)算輸出100元錢買100只雞問題的解決方法

    JS計(jì)算輸出100元錢買100只雞問題的解決方法

    這篇文章主要介紹了JS計(jì)算輸出100元錢買100只雞問題的解決方法,簡(jiǎn)單描述了100元錢買100只雞問題并結(jié)合實(shí)例形式分析了問題解決的思路與具體實(shí)現(xiàn)方法,需要的朋友可以參考下
    2018-01-01

最新評(píng)論

旌德县| 武邑县| 新化县| 邵武市| 营山县| 麻阳| 罗江县| 阿拉善左旗| 响水县| 凤凰县| 涞水县| 绥芬河市| 合肥市| 锦州市| 军事| 中山市| 章丘市| 安丘市| 临江市| 靖远县| 施秉县| 涟水县| 阜宁县| 高阳县| 灯塔市| 枣庄市| 望江县| 肇庆市| 沁水县| 兖州市| 禹州市| 冕宁县| 毕节市| 沧源| 阆中市| 固始县| 南木林县| 桦南县| 台湾省| 勐海县| 宁夏|