commonjs和esmodule

news/2024/12/3 4:07:56/

commonjs的模块导出和引用写法:

lib.js 导出一个模块

let a = 1
let b = 2
function aPlus1() {return a++
}
module.exports = {a,b,aPlus1
}

index.js引用一个模块

const {a,b,aPlus1} = require('./lib.js')
console.log('hh:',a)

esmodule的模块导出和引用方法:

lib.mjs

export let a = 1
export let b = 2

index.mjs

import {a,b} from './lib.mjs'console.log(a)
console.log(b)

总结

commonjs使用require关键字来导入模块,使用module.exports来导出模块。

esmodule使用import {a} from './lib.mjs'来导入模块,使用export来导出模块。

存在的区别:

  • 模块加载和执行的时间点不同。CommonJS的模块在运行时加载和执行,而ES Module的模块在编译时就已经加载和执行。
  • 模块导出和导入的方式不同。CommonJS使用module.exports导出模块的输出,使用require导入其他模块。导出时,通常是创建一个值的副本,导入时,这个副本被修改不会影响导出的值。而ES Module使用export导出模块的输出,使用import导入其他模块。导出时,创建的是值的引用,因此对导出值的任何修改都会反映在导入模块中。
  • 模块作用域不同。在CommonJS中,模块内的代码运行在顶层作用域中,可能会污染全局作用域。而ES Module则为每个模块创建一个独立的作用域,避免全局作用域的污染。

http://www.ppmy.cn/news/1380996.html

相关文章

代码随想录算法训练营第四十三天|1049. 最后一块石头的重量 II, 494. 目标和,474.一和零

1049. 最后一块石头的重量 II https://leetcode.com/problems/last-stone-weight-ii/description/ 思路:两块石头可以互相湮灭, 可以认为其是就是把所有的石头分成正负两组的符号。 例如石头是 [2, 4, 5], 可以认为最后最小的重量是 -(5-4) 2 4 2 -5 …

ELK日志中心搭建(六)- harbor镜像仓库

CentOS 搭建 Harbor 镜像仓库(图文详解)_centos harbor-CSDN博客

HQL,SQL刷题,尚硅谷

目录 相关表数据: 题目及思路解析: 1、查询有两门以上的课程不及格的同学的学号及其平均成绩 2、查询所有学生的学号、姓名、选课数、总成绩 3、查询平均成绩大于85的所有学生的学号、姓名和平均成绩 4、查询学生的选课情况:学号,…

ChatGPT Prompt 的原理总结

ChatGPT Prompt 的原理总结 ChatGPT Prompt 是 OpenAI 开发的大型语言模型 ChatGPT 的一种使用方式。通过 Prompt,用户可以引导 ChatGPT 生成特定内容,例如回答问题、写故事、写代码等等。 Prompt 的原理 Prompt 本质上是一段文本,它告诉 C…

C#常见的.Net类型(二)

目录 一、在集合中存储多个对象理解集合的选择1.列表2.字典3.堆栈4.队列5.集 二、使用Span、索引和范围Span索引范围 处理类型和属性1.特性2.创建自定义特性3.反射 一、在集合中存储多个对象 处理集合的常见类型 类型描述List动态大小的数组,可以按索引访问Dictio…

图论(蓝桥杯 C++ 题目 代码 注解)

目录 迪杰斯特拉模板(用来求一个点出发到其它点的最短距离): 克鲁斯卡尔模板(用来求最小生成树): 题目一(蓝桥王国): 题目二(随机数据下的最短路径&#…

bash: mysqldump: command not found

问题:在linux上执行mysql备份的时候,出现此异常 mysqldump命令找不到 解决: 1、找到mysql目录(找到mysql可执行命令目录) which mysql 有图可知,mysql安装在: /usr1/local/java/mysql 2、my…

JavaWeb03-HTTP协议,Tomcat,Servlet

目录 一、HTTP协议 1.概述 2.特点 3.请求数据格式 (1)请求行 (2)请求头 (3)请求体 (4)常见请求头 (5)GET和POST请求区别 4.响应数据格式 &#xf…