当前位置: 首页 > web >正文

前端mjs和js文件区别,mjs和cjs区别---.es.js和.mjs的区别

https://www.cnblogs.com/jocongmin/p/18432236

同一份配置如下,一般打包出来的结果时是一样的,只不过扩展名不一样

export default defineConfig({build: {rollupOptions: {output: [// 同一份配置,仅扩展名不同{ format: 'es', entryFileNames: '[name].mjs' },{ format: 'es', entryFileNames: '[name].es.js' },],},},
});
# 扩展名	                  用途	                                     内容本质
.mjs	             Node.js 官方约定的 ESM 文件	                   ES Module 代码
.es.js	             社区约定的 ESM 打包文件	                       ES Module 代码
相同点:
两者均为 ES Module 规范,支持 import/export,可被现代浏览器和 Node.js(需配置)直接使用。不同点:
扩展名的选择通常是为了 语义化区分(例如库作者通过 .es.js 表明这是打包后的 ESM 版本)。

4. 实际场景建议
(1)库开发(npm 包)---开发npm包,通过import导入方法  import  {xxx} from 'xxx'  ,使用.mjs
推荐 .mjs:
Node.js 原生支持 .mjs 作为 ESM 文件,无需 "type": "module"。
示例 package.json:
{"type": "commonjs",  // 默认"main": "lib.cjs",   // CommonJS"module": "lib.mjs", // ESM"exports": {".": {"import": "./lib.mjs", // Node.js ESM"require": "./lib.cjs" // CommonJS}}
}
(2)浏览器环境,在浏览器中引入js文件  <script type="module" src="xxx.es.js"></script>
推荐 .es.js:
社区更熟悉此约定(如 lodash.es.js),且浏览器只关心 type="module",不依赖扩展名

总结
默认情况下,.mjs 和 .es.js 文件内容相同(如果配置一致)。

扩展名的选择取决于生态习惯:

用 .mjs:Node.js 原生兼容性更好。

用 .es.js:更符合前端打包惯例(如工具链生成的 ESM 包)。

http://www.xdnf.cn/news/7685.html

相关文章:

  • Oracle Apps R12——报表入门:如何定义一个Concurrent Program(请求)
  • 【Auto-dl ssh隧道,TensorBoard】
  • 矩阵的秩(Rank)
  • 【Vue篇】组件的武林绝学:状态风暴下的乾坤挪移术
  • 考研系列-408真题计算机组成原理篇(2015-2019)
  • Linux中的 I/O 复用机制 select
  • 告别延迟!Ethernetip转modbustcp网关在熔炼车间监控的极速时代
  • Python列表推导式和生成器表达式详解
  • 按键精灵ios/安卓辅助工具高级函数OcrEx文字识别(增强版)脚本开发介绍
  • Redisson中为什么用lua脚本不用事务
  • 深入解析 hping3网络探测与测试利器
  • 海外盲盒系统开发:重构全球消费体验的科技引擎
  • LangChain4j入门(六)整合提示词(Prompt)
  • 软考 系统架构设计师系列知识点之杂项集萃(64)
  • 2025年红帽认证考试要求全解析
  • AUTOSAR图解==>AUTOSAR_SRS_SPALGeneral
  • 智能事件分析边缘服务器:交通管理与安全监测的利器
  • 图表组件库TeeChart Pro VCL/FMX :简化复杂数据处理的可视化利器
  • Vue之入门(Vue是什么以及Vue工作原理)
  • 服装收银系统哪个好?服装店进销存管理软件全面评测
  • 程序设计实践--排序(1)
  • MySQL底层专题之索引数据结构和存储引擎
  • JVM-运行时数据区
  • 飞桨paddle ‘ParallelEnv‘ object has no attribute ‘_device_id‘【已解决】
  • 【MySQL】03.库操作与表操作
  • 大模型的说谎行为
  • Python _day31
  • 在 Win 10 上,Tcl/Tk 脚本2个示例
  • 《算法笔记》11.8小节——动态规划专题->总结 问题 B: 拦截导弹
  • 【数据结构 -- AVL树】用golang实现AVL树