CommonJS和ESM


一、CommonJS

1、什么是模块化

在node.js中,一个js文件(以.js结尾的文件)就是一个模块,node.js中默认的模块化规范就是CommonJS

模块分为两大类

核心模块

由node引擎提供的模块就是核心模块,核心模块的标识就是模块的名字
例如:fs模块、path模块、http模块等

文件模块

由用户创建的模块就是文件模块,文件模块的标识就是文件的路径

2、怎么引入模块

通过require(模块标识)函数引入模块(可以省略文件扩展名)

3、怎么向外暴露变量或者方法

在定义模块时,每一个js文件中的js代码都是独立运行在一个函数中的,所以模块中的内容默认是不能被外部看到的;

//模块中的代码都包装在该函数中
function (exports,require,_filename,_dirname){
   ……}

exports:

可以将希望暴露给外部模块的内容设置为exports的属性

  • 使用方式
    • exports.xxx = xxx的方式暴露

module.exports:

在引入其他模块时,require函数的返回永远指向module.exports对象,且一个模块只能有一个默认导出
exports等同于module.exports,但是二者使用的时候也有区别

  • module代表的时当前模块本身,exports就是module的属性
  • 使用方式
    • 可以通过module.exports.xxx = xxx的方式暴露
    • 也可以通过module.exports = xxx的方式暴露

二、ESM

在node.js中如果需要使用ES的模块化,可以通过以下两种方式:

  • 创建以.mjs结尾的文件
  • 修改package.json中的模块化规范设置为ES模块化
    • 设置"type"的值为"module"

1.怎么引入模块

使用import关键字导入(不可以省略文件扩展名(官方标准))

使用方式:

    • 0
      点赞
    • 1
      收藏
      觉得还不错? 一键收藏
    • 0
      评论
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值