从零开始Node.js—04模块引入与暴露

Node.js中通过require来引入模块,通过module.exports对象来暴露模块。
每个模块可以实现相应的功能,通过灵活调配各个模块,来合作完成一个项目。

1、三种模块🍰

内置模块、第三方模块、自定义模块
其中内置模块以及第三方模块可以直接引用模块名,自定义模块要写好路径

const fs = require('fs') // Node.js中内置模块
const react =  require('react') // 下载安装的第三方模块
const myFile = require('./myFile.js') // 自定义模块,其中.js后缀也可省略不写

⚠️注意:用户创建的每个.js文件都属于自定义模块,即使没有被使用,但它都是模块,内置一个默认的module对象,存储如下信息

Module {
  id: '.',
  path: 'E:\\agap\\nodejs\\module',
  exports: {}, //向外暴露什么对象
  parent: null,
  filename: 'E:\\agap\\nodejs\\module\\01test_require.js',
  loaded: false,
  children: [], // 引入了什么模块
  paths: [
    'E:\\agap\\nodejs\\module\\node_modules',
    'E:\\agap\\nodejs\\node_modules',
    'E:\\agap\\node_modules',
    'E:\\node_modules'
  ]
}

2、引入与暴露

① require来引入模块📥

const m = require('module');
  1. 执行file全部的代码
  2. 之后返回file文件的module.exports所指的对象,并赋值给m
  3. 注意,如果require后是有缓存的,多次引入只将被引入的代码执行一次
const m = require('module');
m = require('module');
m = require('module');
  1. 若内置模块与三方模块重名,则默认加载node.js内置模块
  2. 引入第三方模块时,会去当前文件夹下的node_modules文件夹下找,找不到再向上层文件夹的node_modules文件夹下找
  3. 引入自定义文件,如果不写‘./’,则被视为第三方或者内置模块来处理。
  4. 引入自定义文件,若给的路径是文件夹,则会去找package.json文件中main所指示的入口文件,如果没有的话,会默认认为是index.js
  5. 引入自定义文件,若给的文件名没有后缀,则依次查找.js .json .node

② module.exports设置暴露信息📤

模块默认暴露的是个空对象,可以设置暴露对象的具体信息

module.exports = {}

例子:
有两个文件,02.js引入01.js

// 文件01.js
console.log('自定义模块')
module.exports = {userName: 'xiaomei'}

// 同文件夹下的文件02.js
const m01 = require('./01.js');
console.log(m01)

最终控制台输出:

自定义模块 //执行01输出
{userName: 'xiaomei'} //执行02输出

3、模块间作用域隔离📁

①作用域隔离

模块内部有单独的作用域,模块之间只有一条管道可以相互沟通,就是通过module.exports和require来传递对象。
两个模块是手牵手的关系

②作用域共享

区分于html中引入两个js文件,通常会将代码直接引入其中,将变量都挂载到window下,后面的同名变量会覆盖前面。
两个文件是贴贴的关系,共享变量与方法

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值