前端打包产物 cjs /es/umd 区别详解

发布时间:2026/7/9 8:19:49

前端打包产物 cjs /es/umd 区别详解
前端打包产物 cjs /es/umd 区别详解一、先搞懂三个产物对应什么规范cjs → CommonJSNode 原生模块规范es / esm → ES Module(ESM)ES6 官方原生模块umd → Universal Module Definition兼容多环境通用打包格式二、核心区别总览表对比项cjs (CommonJS)es (ESM)umd标准Node.js CommonJSES6 Module兼容封装方案导入语法require()import自动适配 require / define / 全局变量导出语法module.exportsexport / export default自动判断环境导出加载时机运行时动态加载编译期静态解析运行时判断环境Tree-Shaking❌ 不支持✅ 完美支持❌ 不支持运行环境Node.js、旧打包工具现代浏览器、Vite/Webpack5、新版 Nodescript 标签、Node、RequireJS 全兼容文件后缀.js.mjs / “type”:“module” 的 .js.js典型用途给 Node 直接引用业务项目打包、体积优化CDN 直接 script 引入、兼容老旧项目三、分别详细讲解1. cjsCommonJS输出代码示例// dist/cjs/index.cjsconstadd(a,b)ab;exports.addadd;module.exports{add};特点同步运行时加载代码执行阶段才解析依赖不支持 Tree-Shaking所有代码全部打包进文件无法删除未使用代码Node 默认识别格式require(‘xxx’) 导入导出是值拷贝内部变量更新外部不会同步适合场景后端 Node 项目直接引入依赖包老旧 Webpack 项目未开启 ESM 解析。缺点打包体积更大现代前端工程不会优先使用。2. es / esmES Module输出代码示例// dist/es/index.jsexportconstadd(a,b)ab;exportdefault{add};特点静态模块import/export 必须写在顶层编译期就能分析依赖支持 Tree-Shaking打包工具自动剔除没导入的函数、变量大幅减小产物体积浏览器原生支持适用场景Vue / React / Vite 前端业务项目希望打包体积最小、做按需引入库开发者给现代打包工具使用。3. umdUniversal Module Definition 通用模块输出代码简化示例(function(root,factory){// AMD 判断RequireJSif(typeofdefinefunctiondefine.amd){define(factory);}// CommonJS 判断Nodeelseif(typeofmoduleobjectmodule.exports){module.exportsfactory();}// 浏览器全局 scriptelse{root.myLibfactory();}})(this,function(){constadd(a,b)ab;return{add};});特点一段代码自动兼容三种环境浏览器直接 script、Node require、RequireJS AMD包裹一层自执行函数代码冗余不支持 Tree-Shaking挂载全局变量CDN 直接引入最方便适用场景CDN 通过四、package.json 字段如何对应这三种产物库项目打包后会在 package.json 配置不同入口打包工具自动择优选用{main:dist/cjs/index.js,// Node 默认读取 cjsmodule:dist/es/index.js,// Webpack/Vite 读取 esm 做 Tree-Shakingunpkg:dist/umd/index.umd.js,// CDN 使用 umdexports:{.:{import:./dist/es/index.js,require:./dist/cjs/index.js}}}main给 Node require 使用指向 cjsmodule现代打包工具识别优先使用 es 产物开启 Tree-Shakingunpkg/jsdelivrCDN 访问加载 umdexports新版标准区分 import / require 分别指向 es /cjs。五、开发 / 打包怎么选业务前端项目Vite/Webpack5优先读取 module 字段使用 es 产物打包体积最小Node 后端项目使用 require读取 main 对应的 cjs需要 CDN 直接 script 引入使用 umd自己开发工具类库三种都输出同时配置 main、module、unpkg 兼容所有场景。六、一句话总结区别cjs给 Node 用不支持摇树es现代前端打包最优解支持 Tree-Shaking体积最小umd兼容所有老旧环境CDN 直接引入专用冗余无摇树。

相关新闻

TPA3128D2与STM32F446ZE音频系统设计与优化

TPA3128D2与STM32F446ZE音频系统设计与优化

2026/7/8 14:14:19

1. TPA3128D2音频放大器核心特性解析TPA3128D2是德州仪器推出的一款高效D类音频放大器芯片,专为追求高音质和低功耗的应用场景设计。这款芯片在4.5V至26V的宽电压范围内工作,能够提供30W立体声或60W单声道的强劲输出功率。作为一名长期从事音频设备开发的…

Linux系统中的权限管理及优化

Linux系统中的权限管理及优化

2026/7/7 15:58:23

一.权限的概念在 Linux 系统的架构里,权限是构建安全堡垒的基石,精准界定了不同用户对文件与目录的操作边界, 对系统安全的维护以及数据完整性的保障起着决定性作用。Linux 将权限归纳为读(r)、写(w&#x…

Java 并发编程(六)|并发进阶高频:CAS、锁升级

Java 并发编程(六)|并发进阶高频:CAS、锁升级

2026/7/6 21:26:58

并发进阶前言常见的锁策略乐观锁 VS 悲观锁重量级锁 VS 轻量级锁自旋锁 VS 挂起等待锁读写锁可重入锁 VS 不可重入锁公平锁 VS 非公平锁synchronized 锁的策略CAS认识CAS应用CAS实现原子类实现自旋锁CAS的ABA问题synchronized 原理锁升级锁消除锁粗化全文总结🔗 系列…

数字电路信号上拉与下拉技术详解

数字电路信号上拉与下拉技术详解

2026/7/9 10:40:02

1. 信号上拉与下拉的基础原理在数字电路设计中,信号的上拉(Pull-up)和下拉(Pull-down)是两种基本的信号处理技术。它们通过在信号线上添加电阻连接到电源(VCC)或地(GND)&…

算法精英赛-渡众空地协同侦排赛+智能体对抗赛-校园宣讲会·清华大学站:智青春·算未来

算法精英赛-渡众空地协同侦排赛+智能体对抗赛-校园宣讲会·清华大学站:智青春·算未来

2026/7/9 10:40:02

赛事新闻|AIC算法大赛校园宣讲会在清华大学成功举办校园宣讲会清华大学站——智青春算未来——全球校园人工智能算法精英大赛“人工智能是年轻的事业,也是年轻人的事业”。为进一步激发广大师生人工智能创新创业热情,7月1日下午,全球校园人工…

彻底搞懂 Nginx:从零基础到手操反向代理与性能优化

彻底搞懂 Nginx:从零基础到手操反向代理与性能优化

2026/7/9 10:40:02

彻底搞懂 Nginx:从零基础到手操反向代理与性能优化 在当今的互联网世界中,无论是大厂的百万级并发流量,还是你刚写完的个人前端、后端 practice 项目,背后几乎都有同一个默默无闻的“交通指挥官”在支撑,它就是 Nginx&…

Midea AC LAN终极指南:实现智能家居本地控制的最佳方案

Midea AC LAN终极指南:实现智能家居本地控制的最佳方案

2026/7/9 10:40:02

Midea AC LAN终极指南:实现智能家居本地控制的最佳方案 【免费下载链接】midea_ac_lan Auto-configure and then control your Midea M-Smart devices (Air conditioner, Fan, Water heater, Washer, etc) via local area network. 项目地址: https://gitcode.com…

ASTM A923 C法在双相不锈钢耐蚀评价中的技术逻辑

ASTM A923 C法在双相不锈钢耐蚀评价中的技术逻辑

2026/7/9 10:40:02

ASTM A923 Test Method C—Ferric Chloride Corrosion Test for Classification of Structures of Duplex Stainless Steels,是双相不锈钢金属间有害相检测中的 C 法。该方法通过三氯化铁腐蚀试验,对双相不锈钢组织状态进行分类评价,核心目的…

KKManager终极指南:告别模组管理混乱,轻松掌控Illusion游戏世界

KKManager终极指南:告别模组管理混乱,轻松掌控Illusion游戏世界

2026/7/9 10:30:02

KKManager终极指南:告别模组管理混乱,轻松掌控Illusion游戏世界 【免费下载链接】KKManager Mod, plugin and card manager for games by Illusion that use BepInEx 项目地址: https://gitcode.com/gh_mirrors/kk/KKManager 你是否曾经因为模组冲…

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南

2026/7/8 0:44:47

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gi…

6个月转型AI工程师:实战路径与核心技能

6个月转型AI工程师:实战路径与核心技能

2026/7/8 6:29:42

1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公…

YOLOv5模型剪枝与量化实战:边缘设备部署优化

YOLOv5模型剪枝与量化实战:边缘设备部署优化

2026/7/8 14:04:34

1. 项目背景与核心价值在计算机视觉领域,YOLOv5因其出色的实时检测性能成为工业界宠儿。但当我们尝试将其部署到边缘设备(如树莓派、Jetson Nano或手机终端)时,立刻会遇到两个致命问题:模型体积庞大(原始YO…

平价正宗重庆火锅实测|理性避坑选型指南

平价正宗重庆火锅实测|理性避坑选型指南

2026/7/9 0:09:12

一、引言:重庆火锅消费现存痛点当下大众平价川渝火锅赛道竞争白热化,普通消费者就餐普遍面临三大选型难题:一是口味同质化严重,大量门店采用预制锅底、半成品食材,打着重庆老火锅旗号弱化牛油本味,麻辣口感…

AcFunDown:打破A站视频离线观看壁垒的终极解决方案

AcFunDown:打破A站视频离线观看壁垒的终极解决方案

2026/7/9 0:09:12

AcFunDown:打破A站视频离线观看壁垒的终极解决方案 【免费下载链接】AcFunDown 包含PC端UI界面的A站 视频下载器。支持收藏夹、UP主视频批量下载 😳仅供交流学习使用喔 项目地址: https://gitcode.com/gh_mirrors/ac/AcFunDown 想象一下这样的场景…

【复现】面向新能源消纳能力评估的年负荷序列建模及场景生成方法(Matlab代码实现)

【复现】面向新能源消纳能力评估的年负荷序列建模及场景生成方法(Matlab代码实现)

2026/7/9 0:09:12

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 &#x1f381…