Vue3+Vite中lodash-es安裝與使用指南

在 Vue 3 + Vite 項目中安裝和使用 lodash-es 的詳細指南如下:

一、為什么選擇 lodash-es?

  • ES 模塊支持:lodash-es 以原生 ES 模塊格式發布,支持現代構建工具的 Tree Shaking

  • 按需加載:只引入需要的函數,顯著減小打包體積

  • 完整功能:提供與 lodash 相同的實用函數

二、安裝步驟

bash

復制

下載

npm install lodash-es
# 或
yarn add lodash-es
# 或
pnpm add lodash-es

三、推薦使用方式:按需導入(最佳實踐)

在組件中只導入需要的函數:

vue

復制

下載

<template><div><input @input="handleInput" placeholder="輸入關鍵詞"/><p>去抖結果:{{ debouncedText }}</p><p>數組交集:{{ intersectionResult }}</p></div>
</template><script setup>
import { ref } from 'vue'
// 按需導入具體函數(關鍵步驟!)
import { debounce, intersection } from 'lodash-es'const inputText = ref('')
const debouncedText = ref('')
const array1 = [1, 2, 3]
const array2 = [2, 3, 4]// 使用 lodash-es 的 debounce
const handleInput = debounce((e) => {debouncedText.value = e.target.value
}, 500)// 使用 lodash-es 的 intersection
const intersectionResult = intersection(array1, array2) // [2, 3]
</script>

四、全局導入(不推薦)

javascript

復制

下載

// vite.config.js
import { defineConfig } from 'vite'export default defineConfig({optimizeDeps: {include: ['lodash-es'] // 添加預構建依賴}
})

javascript

復制

下載

// main.js
import * as _ from 'lodash-es'// 掛載到 Vue 全局屬性
app.config.globalProperties.$_ = _

vue

復制

下載

<!-- 組件中使用 -->
<script setup>
import { getCurrentInstance } from 'vue'const { proxy } = getCurrentInstance()
proxy.$_.debounce(/* ... */)
</script>

五、常用函數示例

  1. 防抖處理

javascript

復制

下載

import { debounce } from 'lodash-es'window.addEventListener('resize', debounce(() => {console.log('窗口調整結束')
}, 300))
  1. 數組操作

javascript

復制

下載

import { chunk, difference } from 'lodash-es'chunk(['a', 'b', 'c', 'd'], 2) // [['a','b'], ['c','d']]
difference([1, 2, 3], [2, 3])  // [1]
  1. 對象操作

javascript

復制

下載

import { cloneDeep, merge } from 'lodash-es'const obj = { a: { b: 1 } }
const deepCopy = cloneDeep(obj)merge({ a: 1 }, { b: 2 }) // { a: 1, b: 2 }
  1. 實用工具

javascript

復制

下載

import { random, sampleSize } from 'lodash-es'random(5, 10)           // 5-10之間的隨機數
sampleSize([1,2,3,4], 2) // 隨機選取2個元素

六、為什么按需導入更好?

  1. Tree Shaking 優化

    javascript

    復制

    下載

    // 打包時只會包含 debounce 及其依賴
    import { debounce } from 'lodash-es' // 會包含整個lodash庫 (約70KB)
    import _ from 'lodash' 
  2. 體積對比

    • 完整 lodash-es:≈70KB

    • 按需引入單個函數:通常 < 1KB

七、解決 TypeScript 類型提示

  1. 安裝類型聲明:

bash

復制

下載

npm install @types/lodash-es -D
  1. 在 tsconfig.json 中添加:

json

復制

下載

{"compilerOptions": {"types": ["lodash-es"]}
}

八、常見問題解決

  1. 構建警告 "Circular dependency"
    在 vite.config.js 中添加:

    javascript

    復制

    下載

    export default defineConfig({build: {commonjsOptions: {exclude: ['lodash-es']}}
    })
  2. 瀏覽器兼容性
    在?vite.config.js?中添加官方插件:

    javascript

    復制

    下載

    import legacy from '@vitejs/plugin-legacy'export default defineConfig({plugins: [legacy({targets: ['defaults', 'not IE 11']})]
    })

九、替代方案(輕量選擇)

如果只需要少量函數,可考慮單獨安裝:

bash

復制

下載

npm install lodash.debounce lodash.clonedeep

使用:

javascript

復制

下載

import debounce from 'lodash.debounce'
import cloneDeep from 'lodash.clonedeep'

最佳實踐總結

  1. 始終按需導入import { func } from 'lodash-es'

  2. 避免全局導入:防止打包體積過大

  3. 配合 Vite 的 Tree Shaking:現代構建工具會自動優化

  4. 復雜操作優先使用 lodash:如深度克隆、防抖節流等

按照這些步驟,您可以高效地在 Vue 3 + Vite 項目中使用 lodash-es,在保持小體積的同時獲得強大的工具函數支持。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/85694.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/85694.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/85694.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

法律模型選型

當然可以&#xff0c;以下是關于法律法規相關模型的技術選型調研建議&#xff0c;適合算法實習生從0入手&#xff0c;并能交付有深度的調研報告&#xff1a; 一、調研背景與目標 目標&#xff1a;調研用于處理法律法規類任務的大模型與技術方案&#xff0c;明確適合本團隊的模…

軟件工程專業的本科生應該具備哪些技能

軟件工程專業的本科生需要具備扎實的技術基礎、良好的開發流程認知和一定的軟技能&#xff0c;以適應軟件開發行業的需求。以下從技術技能、開發流程與工具、軟技能、實踐能力等維度整理核心技能清單&#xff0c;供參考&#xff1a; 一、核心技術技能 1. 編程語言 - 必學基礎語…

[Java 基礎]類,面向對象的藍圖

首先需要區分類和對象都是啥&#xff1f; 類&#xff1a;類是一個模板&#xff0c;它描述一類對象的行為和狀態&#xff0c;類這個概念更像是下定義&#xff0c;更像是模板&#xff08;橡皮泥膜具&#xff09;。 對象&#xff1a;對象&#xff08;不是女朋友&#xff09;是類…

selenium-自動更新谷歌瀏覽器驅動

1、簡介 selenium最初是一個自動化測試工具&#xff0c;而爬蟲中使用它主要是為了解決requests無法直接執行JavaScript代碼的問題&#xff0c;因為有些網頁數據是通過JavaScript動態加載的。selenium本質是通過驅動瀏覽器&#xff0c;完全模擬瀏覽器的操作&#xff0c;比如輸入…

java從azure中讀取用戶信息

以下是用 Java 從 Azure AD 獲取用戶信息的完整實現方案&#xff0c;使用 Spring Boot 框架和 Microsoft 身份驗證庫 (MSAL)&#xff1a; 1. 添加 Maven 依賴 <dependencies> <!-- Spring Boot Web --> <dependency> <groupId>org.…

C# 數據庫訪問與ORM框架全面指南:從ADO.NET到Entity Framework Core

在現代應用開發中&#xff0c;數據持久化是核心需求之一。作為.NET生態系統中的主力語言&#xff0c;C#提供了豐富多樣的數據庫訪問技術和工具。本文將全面探討C#中的數據庫訪問方式&#xff0c;重點介紹三種主流ORM&#xff08;對象關系映射&#xff09;框架&#xff1a;Entit…

day19 leetcode-hot100-37(二叉樹2)

104. 二叉樹的最大深度 - 力扣&#xff08;LeetCode&#xff09; 1.深度優先遍歷&#xff08;遞歸&#xff09;ps:不好理解&#xff0c;所以我一般不喜歡用遞歸 思路 典型算法&#xff0c;用遞歸求出高度&#xff0c;每次都是深度優先。 具體算法 /*** Definition for a bi…

【LLMs篇】13:LLaDA—大型語言擴散模型

欄目內容論文標題大型語言擴散模型 (Large Language Diffusion Models)核心思想提出LLaDA&#xff0c;一種基于擴散模型的LLM&#xff0c;通過前向掩碼和反向預測過程建模語言分布&#xff0c;挑戰自回歸模型&#xff08;ARM&#xff09;在LLM領域的主導地位&#xff0c;并展示…

Deepfashion2 數據集使用筆記

目錄 數據類別: 篩選類別數據: 驗證篩選前2個類別: Deepfashion2 的解壓碼 數據類別: 類別含義: Class idx類別名稱英文名稱0短上衣short sleeve top1長上衣long sleeve top2短外套short sleeve outwear3長外套long sleeve outwear4裙子skirt5褲子trousers6連衣裙dre…

Java并發編程哲學系列匯總

文章目錄 并發編程基礎并發編程進階并發編程實踐 并發編程基礎 Java并發編程基礎小結 Java線程池知識點小結 詳解JUC包下各種鎖的使用 并發編程利器Java CAS原子類全解 深入理解Java中的final關鍵字 Java并發容器深入解析&#xff1a;HashMap與ArrayList線程安全問題及解…

git 之 stash

一、git stash&#xff1a;臨時保存工作區修改 作用 將當前工作目錄和暫存區的未提交修改保存到棧中&#xff0c;并恢復工作區到上一次提交的干凈狀態。 適用場景&#xff1a; 臨時切換分支修復緊急 Bug拉取遠程代碼前清理工作區保存實驗性代碼避免生成無效提交 常用命令&am…

vxe-grid 雙擊行,打開expand的內容

1、官網api Vxe Table v4.6&#xff08;根據版本&#xff09; 要調用這個事件&#xff0c;雙擊單元格&#xff0c;我們打開type"expand"的內容 2、打開的事件toggleRowExpand 3、事件的說明 這個方法&#xff0c;會自動判斷當前展開的狀態&#xff0c;然后去觸發相…

Java Stream 高級實戰:并行流、自定義收集器與性能優化

一、并行流深度實戰&#xff1a;大規模數據處理的性能突破 1.1 并行流的核心應用場景 在電商用戶行為分析場景中&#xff0c;需要對百萬級用戶日志數據進行實時統計。例如&#xff0c;計算某時段內活躍用戶數&#xff08;訪問次數≥3次的用戶&#xff09;&#xff0c;傳統循環…

計算機系統結構-第5章-監聽式協議

監聽式協議******&#xff1a; 思想: 每個Cache除了包含物理存儲器中塊的數據拷貝之外&#xff0c;也保存著各個塊的共享狀態信息。 Cache通常連在共享存儲器的總線上&#xff0c;當某個Cache需要訪問存儲器時&#xff0c;它會把請求放到總線上廣播出去&#xff0c;其他各個C…

(c++)string的模擬實現

目錄 1.構造函數 2.析構函數 3.擴容 1.reserve(擴容不初始化) 2.resize(擴容加初始化) 4.push_back 5.append 6. 運算符重載 1.一個字符 2.一個字符串 7 []運算符重載 8.find 1.找一個字符 2.找一個字符串 9.insert 1.插入一個字符 2.插入一個字符串 9.erase 10…

學習筆記(24): 機器學習之數據預處理Pandas和轉換成張量格式[2]

學習筆記(24): 機器學習之數據預處理Pandas和轉換成張量格式[2] 學習機器學習&#xff0c;需要學習如何預處理原始數據&#xff0c;這里用到pandas&#xff0c;將原始數據轉換為張量格式的數據。 學習筆記(23): 機器學習之數據預處理Pandas和轉換成張量格式[1]-CSDN博客 下面…

LeetCode 2297. 跳躍游戲 VIII(中等)

題目描述 給定一個長度為 n 的下標從 0 開始的整數數組 nums。初始位置為下標 0。當 i < j 時&#xff0c;你可以從下標 i 跳轉到下標 j: 對于在 i < k < j 范圍內的所有下標 k 有 nums[i] < nums[j] 和 nums[k] < nums[i] , 或者對于在 i < k < j 范圍…

【前端】緩存相關

本知識頁參考&#xff1a;https://zhuanlan.zhihu.com/p/586060532 1. 概述 1.1 應用場景 靜態資源 場景&#xff1a;圖片、CSS、JS 文件等靜態資源實現&#xff1a;使用 HTTP 緩存控制頭&#xff0c;或者利用 CDN 進行邊緣緩存 數據緩存 場景&#xff1a;請求的返回結果實現…

獵板硬金鍍層厚度:高頻通信領域的性能分水嶺

在 5G 基站、毫米波雷達等高頻場景中&#xff0c;硬金鍍層厚度的選擇直接決定了 PCB 的信號完整性與長期可靠性。獵板硬金工藝&#xff1a; 1.8μm 金層搭配羅杰斯 4350B 基材的解決方案&#xff0c;在 10GHz 頻段實現插入損耗&#xff1c;0.15dB/cm&#xff0c;較常規工藝降低…

第35次CCF計算機軟件能力認證-5-木板切割

原題鏈接&#xff1a; TUOJ 我自己寫的35分正確但嚴重超時的代碼 #include <bits/stdc.h> using namespace std; int main() {int n, m, k;cin >> n >> m >> k;vector<unordered_map<int, int>> mp(2);int y;for (int i 1; i < n; …