指尖上的记忆指尖上的记忆
首页
  • 基础
  • Laravel框架
  • Symfony框架
  • 基础
  • Gin框架
  • 基础
  • Spring框架
  • 命令
  • Nginx
  • Ai
  • Deploy
  • Docker
  • K8s
  • Micro
  • RabbitMQ
  • Mysql
  • PostgreSsql
  • Redis
  • MongoDb
  • Html
  • Js
  • 前端
  • 后端
  • Git
  • 知识扫盲
  • Golang
🌟 gitHub
首页
  • 基础
  • Laravel框架
  • Symfony框架
  • 基础
  • Gin框架
  • 基础
  • Spring框架
  • 命令
  • Nginx
  • Ai
  • Deploy
  • Docker
  • K8s
  • Micro
  • RabbitMQ
  • Mysql
  • PostgreSsql
  • Redis
  • MongoDb
  • Html
  • Js
  • 前端
  • 后端
  • Git
  • 知识扫盲
  • Golang
🌟 gitHub

js的两种模块的写法区别:

ESM(ECMAScript 模块)和 CommonJS 是两种 JavaScript 模块系统的实现方式,它们有几个关键的区别:
  
语法差异:

ESM 使用 import 和 export 关键字来导入和导出模块。
CommonJS 使用 require() 函数来导入模块,并使用 module.exports 或 exports 对象来导出模块。
  
加载时机:

ESM 是静态加载的,模块在代码解析阶段就会被加载。
CommonJS 是动态加载的,模块在代码执行阶段才会被加载。
  
模块加载方式:

ESM 是异步加载的,因此模块加载的顺序是不确定的,它们在需要时才会被加载。
CommonJS 是同步加载的,模块加载的顺序是确定的,它们在代码执行时立即加载。
  
作用域:

ESM 模块默认是严格模式的,且每个模块都有自己的作用域。
CommonJS 模块默认不是严格模式的,且所有模块共享同一个顶级作用域。
  
浏览器兼容性:

ESM 目前在现代浏览器中得到了广泛支持,但在旧版浏览器中可能需要使用工具进行转换。
CommonJS 通常需要使用工具(如 Browserify、Webpack 等)将模块转换成浏览器可执行的代码。
总的来说,ESM 更符合现代 JavaScript 语言的发展趋势,它的静态加载和模块作用域使得代码更加清晰和可靠。CommonJS 则是 Node.js 长期以来使用的模块系统,在服务器端开发中仍然具有重要的地位。