最近开始接触web编程,一上来就看到一堆关于module 的信息, commomJS module 和 ES module 直接给我看懵了。网上搜一下,总结一下。
大概意思就是CommonJS 先出现,用在nodejs 编程中。这玩意在浏览器中支持的不太好,随着时间的推移浏览器代码也需要模块化呀,于是 ES module 就出现了。
ES module 逐渐强大,大有一统天下的趋势,于是最新的nodejs 中也开始支持 ES module.
说了演变历史,在再说一下具体的区别:
CommonJs module:
- 一次只能导出一个变量;
- 在nodejs 中使用;
- 用require 语句调用
ES modules:
- 一次可以导出多个变量;
- 在浏览器中使用;
- 用import 语句导入;
这些区别在 前端的导入导出:「CommonJS」「ES Module」模块化规范 - 掘金 (juejin.cn) 这个文章中讲的很好。
既然有这两个模块,那html是否可以调用CommonJs 模块呢,又如何调用呢;
参考文件 :ES6和commonJs模块化规范的混用_webpack能不能同时输出commonjs和es规范的文件-CSDN博客
越来越多的模块同时发布成支持commonJS 和ES6 规范的文件; 在package.json 中:
{
"main": "aaa.js",
"module": "aaa.module.js"
}
如果使用require
,那么它就用aaa.js
,如果你用import
,那么它就用aaa.module.js;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?