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

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

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

前言

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

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

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

頻繁調(diào)用appendChild會導(dǎo)致瀏覽器反復(fù)重排 DOM,性能較差??梢韵扔?code>DocumentFragment暫存元素,最后一次性插入頁面。

// 常規(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)所有子元素,無需遍歷刪除,這 3 種方式各有優(yōu)勢:

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

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

container.innerHTML = "";

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

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

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

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

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

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

Set天然不允許重復(fù)元素,結(jié)合Array.from或擴(kuò)展運(yùn)算符,一行代碼即可實現(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]

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

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

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

// 需求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](簡單場景)

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

5. 格式化時間:無需第三方庫,用 Intl.DateTimeFormat

前端格式化時間(如 “2024-05-20”“2024 年 5 月 20 日 14:30”),無需引入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. 深拷貝對象:簡單場景用結(jié)構(gòu)化克隆

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

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

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

const deepCloneObj = structuredClone(obj);

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

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

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

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

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

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

/* 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()實現(xiàn)響應(yīng)式字體(告別媒體查詢)

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

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

.title {
  font-size: 24px;
}

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

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

/* 優(yōu)化寫法:用clamp()一行實現(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ù)組 / 對象

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

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

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

// 常規(guī)打?。何谋拘问剑灰讓Ρ?

console.log(users);

// 優(yōu)化打?。罕砀裥问?,清晰直觀

console.table(users);

打印效果:

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

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

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

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

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

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

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

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

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

    微信小程序?qū)崿F(xiàn)拉鏈?zhǔn)降幕瑒域炞C

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

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

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

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

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

    JS計算網(wǎng)頁停留時間代碼

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

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

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

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

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

最新評論

莒南县| 福州市| 建始县| 大埔县| 邳州市| 句容市| 丰顺县| 萍乡市| 汉沽区| 旬阳县| 龙门县| 霸州市| 商都县| 荔波县| 钦州市| 禄劝| 齐河县| 阜城县| 改则县| 贵定县| 蓬安县| 岱山县| 嘉禾县| 白沙| 镇原县| 宁强县| 扶绥县| 绍兴市| 肇州县| 温州市| 哈巴河县| 沛县| 晋江市| 满城县| 兰州市| 神木县| 汝阳县| 潍坊市| 仲巴县| 虹口区| 双流县|