前端工具庫lodash與lodash-es區別詳解

lodash?和?lodash-es?是同一工具庫的兩個不同版本,核心功能完全一致,主要區別在于模塊化格式和優化方式,適合不同的開發環境。以下是詳細對比:


1.?模塊化格式

  • lodash

    • 使用?CommonJS?模塊格式(require/module.exports)。

    • 適用于 Node.js 環境或通過 Webpack/Browserify 等工具打包的傳統前端項目。

    • 示例:

      javascript

      復制

      下載

      const _ = require('lodash'); // CommonJS 導入
      _.debounce(/* ... */);
  • lodash-es

    • 使用?ES Module?格式(import/export)。

    • 適用于現代前端框架(Vite、Rollup、Webpack + ES Module)或原生支持 ES Module 的瀏覽器環境。

    • 示例:

      javascript

      復制

      下載

      import { debounce } from 'lodash-es'; // ES Module 導入
      debounce(/* ... */);

2.?搖樹優化(Tree Shaking)

  • lodash

    • 不支持 Tree Shaking。即使只使用一個函數(如?debounce),也會引入整個庫或整個功能組(如?lodash/debounce?可能包含冗余代碼)。

    • 導致打包體積較大。

  • lodash-es

    • 天然支持 Tree Shaking。構建工具(Webpack/Rollup)能按需剔除未使用的代碼。

    • 示例:若只導入?debounce,最終打包僅包含該函數及其依賴。

    • 顯著減小項目體積,是現代前端項目的首選。


3.?文件結構與構建方式

  • lodash

    • 發布的是?預編譯后的 CommonJS 文件(位于?lodash?包的根目錄)。

    • 提供單文件全量引入(lodash)和按功能組引入(lodash/debounce)。

  • lodash-es

    • 發布的是?ES Module 的源碼(保留原始目錄結構)。

    • 所有函數獨立導出,便于構建工具靜態分析。

    • 文件路徑示例:

      javascript

      復制

      下載

      import debounce from 'lodash-es/debounce'; // 按文件路徑導入

4.?使用場景

場景推薦選擇原因
現代前端項目(Vue/React)lodash-es支持 Tree Shaking,體積更小
Node.js 服務端lodash天然兼容 CommonJS
傳統腳本(通過?<script>lodash直接使用全局變量?_
對打包體積敏感的項目lodash-es按需引入減少體積

5.?安裝與導入

bash

復制

下載

# 安裝 lodash (CommonJS)
npm install lodash# 安裝 lodash-es (ES Module)
npm install lodash-es

javascript

復制

下載

// lodash 的兩種導入方式
const _ = require('lodash'); // 全量引入
const debounce = require('lodash/debounce'); // 按功能組引入// lodash-es 的導入方式
import { debounce } from 'lodash-es'; // 按需 Tree Shaking
import debounce from 'lodash-es/debounce'; // 直接按路徑導入

6.?體積對比示例

假設項目中只使用?debounce

  • lodash:引入后最小體積約?24KB(整個功能組)。

  • lodash-es:通過 Tree Shaking 可縮減至?1KB 以下

? 使用?lodash-es?+ Tree Shaking 能輕松節省?90%+?的體積。


總結

特性lodashlodash-es
模塊格式CommonJSES Module
Tree Shaking? 不支持? 完美支持
打包體積較大按需加載極小
使用場景Node.js/傳統環境現代前端框架
按需導入功能組級函數級

優先選擇?lodash-es,除非你的環境明確需要 CommonJS(如 Node.js 腳本)。現代前端工具鏈(Webpack 4+/Rollup/Vite)均已原生支持 ES Module,配合?lodash-es?能最大化優化項目體積。

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

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

相關文章

算法-構造題

#include<iostream> #include<bits/stdc.h> using namespace std; typedef long long ll; const ll N 5e5 10; int main() {ll n, k;cin >> n >> k; ll a[N] {0}; // 初始化一個大小為N的數組a&#xff0c;用于存儲排列// 構造滿足條件的排列for (l…

LeetCode--25.k個一組翻轉鏈表

解題思路&#xff1a; 1.獲取信息&#xff1a; &#xff08;1&#xff09;給定一個鏈表&#xff0c;每k個結點一組進行翻轉 &#xff08;2&#xff09;余下不足k個結點&#xff0c;則不進行交換 2.分析題目&#xff1a; 其實就是24題的變題&#xff0c;24題是兩兩一組進行交換&…

OC—UI學習-2

導航控制器和導航工具欄 導航控制器 UINAvigationController與UIViewController的關系 UIViewController是什么&#xff1f; 它是一個普通的視圖控制器&#xff0c;負責管理一個頁面 UINavigationController是什么&#xff1f; 它是一個容器控制器&#xff0c;專門用來管理一…

Microsoft前后端不分離編程新風向:cshtml

文章目錄 什么是CSHTML&#xff1f;基礎語法內聯表達式代碼塊控制結構 布局頁面_ViewStart.cshtml_Layout.cshtml使用布局 模型綁定強類型視圖模型集合 HTML輔助方法基本表單驗證 局部視圖創建局部視圖使用局部視圖 高級特性視圖組件依賴注入Tag Helpers 性能優化緩存捆綁和壓縮…

【SpringBoot+SpringCloud】Linux配置nacos踩坑大全

*建議在開發時使用Linux環境下搭建nacos 1.在nacos官網找到搭配SpringBoot和SpringCloud的版本 2.Nacos 依賴 Java 環境來運行&#xff0c;需要在linux系統中安裝JDK 1.8 3.按照Nacos官網步驟安裝&#xff0c;防火墻配置開放8848和9848端口 客戶端擁有相同的計算邏輯&…

如何在 Java 中優雅地使用 Redisson 實現分布式鎖

分布式系統中&#xff0c;節點并發訪問共享資源可能導致數據一致性問題。分布式鎖是常見的解決方案&#xff0c;可確保操作原子性。Redisson是基于Redis的Java分布式對象庫&#xff0c;提供多種分布式同步工具&#xff0c;包括分布式鎖。Redisson與Redis&#xff08;實時數據平…

pikachu靶場通關筆記20 SQL注入03-搜索型注入(GET)

目錄 一、SQL注入 二、搜索型注入 三、源碼分析 1、滲透思路1 2、滲透思路2 四、滲透實戰 1、滲透準備 2、SQL注入探測 &#xff08;1&#xff09;輸入百分號單引號 &#xff08;2&#xff09;萬能注入語句 3、獲取回顯列orderby 4、獲取數據庫名database 5、獲取…

mac:大模型系列測試

0 MAC 前幾天經過學生優惠以及國補17K入手了mac studio,然后這兩天親自測試其模型行運用能力如何&#xff0c;是否支持微調、推理速度等能力。下面進入正文。 1 mac 與 unsloth 按照下面的進行安裝以及測試&#xff0c;是可以跑通文章里面的代碼。訓練速度也是很快的。 注意…

A Survey on the Memory Mechanism of Large Language Model based Agents

目錄 摘要Abstract1. LLM-Based Agent的Memory1.1 基礎概念1.2 用于解釋Memory的例子1.3 智能體記憶的定義1.3.1 狹義定義(肯定不用這個定義)1.3.2 廣義定義 1.4 記憶協助下智能體與環境的交互過程1.4.1 記憶寫入1.4.2 記憶管理1.4.3 記憶讀取1.4.4 總過程 2. 如何實現智能體記…

搭建 Serverless 架構

? 一、理解 Serverless 架構核心概念 核心理念&#xff1a; 無需管理服務器&#xff1a;只需編寫業務邏輯&#xff0c;部署后由云平臺托管運行環境。 事件驅動&#xff08;Event-driven&#xff09; 按需計費&#xff08;按調用次數/資源消耗&#xff09; 高可擴展性與自動…

Git倉庫的創建

Git服務器準備 假設Git所在服務器為Ubuntu系統&#xff0c;IP地址10.17.1.5。 一. 準備運行git服務的git用戶&#xff0c;這里用戶名就直接設定為git。 1. 創建一個git用戶組&#xff0c;并創建git用戶。 sudo groupadd git sudo useradd git -g git 2. 創建git用戶目錄&…

電腦提示dll文件缺失怎么辦 dll修復方法

當你在使用某些應用程序或啟動電腦時&#xff0c;看到提示“DLL文件缺失”的錯誤信息&#xff0c;這通常意味著某個必要的動態鏈接庫&#xff08;DLL&#xff09;文件無法被找到或加載&#xff0c;導致軟件無法正常運行。本文將詳細介紹如何排查和修復DLL文件缺失的問題&#x…

使用 Rest-Assured 和 TestNG 進行購物車功能的 API 自動化測試

這段代碼使用了 Rest-Assured 進行 API 測試&#xff0c;結合 TestNG 框架執行多個 HTTP 請求并進行斷言驗證。以下是對每個測試方法的詳細解釋&#xff0c;包括代碼邏輯和測試目的。 1. test01() 方法 - 提取響應數據 Test public void test01() {String jsonData "{\&…

【設計模式-4.7】行為型——備忘錄模式

說明&#xff1a;本文介紹行為型設計模式之一的備忘錄模式 定義 備忘錄模式&#xff08;Memento Pattern&#xff09;又叫作快照模式&#xff08;Snapshot Pattern&#xff09;或令牌模式&#xff08;Token Pattern&#xff09;指在不破壞封裝的前提下&#xff0c;捕獲一個對…

2025年滲透測試面試題總結-天融信[社招]滲透測試工程師(題目+回答)

安全領域各種資源&#xff0c;學習文檔&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各種好玩的項目及好用的工具&#xff0c;歡迎關注。 目錄 天融信[社招]滲透測試工程師 一、Java Spring Boot組件漏洞 1. CVE-2018-1270&#xff08;WebSocket RCE&…

華為OD機考-內存冷熱標記-多條件排序

import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的區別while (in.hasNextLine()) { // 注意 while 處理多個 caseint a in.nextInt();int[] arr new int[a];for(int…

PPT轉圖片拼貼工具 v3.0

軟件介紹 這個軟件就是將PPT文件轉換為圖片并且拼接起來。 這個代碼支持導入單個文件也支持導入文件夾 但是目前還沒有解決可視化界面問題。 效果展示 軟件源碼 import os import re import win32com.client from PIL import Image from typing import List, Uniondef con…

NLP學習路線圖(三十):微調策略

在自然語言處理領域,預訓練語言模型(如BERT、GPT、T5)已成為基礎設施。但如何讓這些“通才”模型蛻變為特定任務的“專家”?微調策略正是關鍵所在。本文將深入剖析七種核心微調技術及其演進邏輯。 一、基礎概念:為什么需要微調? 預訓練模型在海量語料上學習了通用語言表…

講述我的plc自學之路 第十三章

我和lora都是那種理想主義者&#xff0c;這是我們的共同之處。但是lora比我要更文藝一些&#xff0c;她讀的書畢竟比我多&#xff0c;上的又是名校。受北大人文氣息的熏陶&#xff0c;她總是對愛情充滿了太多幻想。 “說說你的過往吧&#xff0c;lora。”我給lora倒了一杯啤酒&…

GPU虛擬化

引言 現有如下環境&#xff08;注意相關配置&#xff1a;只有一個k8s節點&#xff0c;且該節點上只有一張GPU卡&#xff09;&#xff1a; // k8s版本 $ kubectl version Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.7&…