首页 > 编程语言 >Node.js 中的模块化

Node.js 中的模块化

时间:2022-12-23 19:11:48浏览次数:42  
标签:Node exports 自定义 模块化 module js 模块

1 Node.js 中模块的分类

Node.js 中根据模块来源的不同,将模块分为了 3 大类,分别是:

⚫ 内置模块(内置模块是由 Node.js 官方提供的,例如 fs、path、http 等)

⚫ 自定义模块(用户创建的每个 .js 文件,都是自定义模块)

⚫ 第三方模块(由第三方开发出来的模块,并非官方提供的内置模块,也不是用户创建的自定义模块,使用前需要先下载)

2 加载模块

使用强大的 require() 方法,可以加载需要的内置模块、用户自定义模块、第三方模块进行使用。例如:

 

 

 3 Node.js 中的模块作用域

1. 什么是模块作用域

和函数作用域类似,在自定义模块中定义的变量、方法等成员,只能在当前模块内被访问,这种模块级别的访问限制,叫做模块作用域。

4 向外共享模块作用域中的成员

1. module.exports 对象

在自定义模块中,可以使用 module.exports 对象,将模块内的成员共享出去,供外界使用。

外界用 require() 方法导入自定义模块时,得到的就是 module.exports 所指向的对象。

使用 require() 方法导入模块时,导入的结果,永远以 module.exports 指向的对象为准。

2. exports 对象

由于 module.exports 单词写起来比较复杂,为了简化向外共享成员的代码,Node 提供了 exports 对象。默认情况下,exports 和 module.exports 指向同一个对象。最终共享的结果,还是module.exports 指向的对象为准。

3.exports 和 module.exports 的使用误区

时刻谨记,require() 模块时,得到的永远是 module.exports 指向的对象:

 

5 Node.js 中的模块化规范

Node.js 遵循了 CommonJS 模块化规范,CommonJS 规定了模块的特性和各模块之间如何相互依赖。

CommonJS 规定:

① 每个模块内部,module 变量代表当前模块。

② module 变量是一个对象,它的 exports 属性(即 module.exports)是对外的接口。

③ 加载某个模块,其实是加载该模块的 module.exports 属性。require() 方法用于加载模块

标签:Node,exports,自定义,模块化,module,js,模块
From: https://www.cnblogs.com/llf11/p/17001347.html

相关文章

  • 用Echarts实现SpreadJS引用从属关系可视化
    在金融行业,我们经常会有审计审查的需求,对某个计算结果进行审查,但是这个计算结果可能依赖多个单元格,而且会有会有多级依赖的情况,如果让我们的从业人员靠眼睛找,工作量巨大,而......
  • node.js里面的http模块
    http模块1什么是http模块http模块是Node.js官方提供的、用来创建web服务器的模块。通过http模块提供的http.createServer()方法,就能方便的把一台普通的电脑......
  • JS 通过 URL 获取图片并转成Base64格式
    需求输入一个图片的URL,获取到图片的Base64格式数据前提npminstallaxios代码importaxiosfrom'axios'/***通过url获取图片并转成base64*@param{str......
  • 关于jsjiami.v6加密和解密
    JavaScript解密是指在JavaScript代码被加密之后,使用特定的工具或方法来恢复其原有的可读性。这种技术通常用于对JavaScript代码进行保护,以防止代码被未经授权的人窃取......
  • 记录两个小坑:js的长整型精度问题、php unset数组后再进行json编码会数据变成字典
    js的长整型精度问题超过15位的长整型js会自动进行进位,传值时需要加上在参数上加""转换为字符串onclick="del('<?=$val['song_id']?>',<?=$params['id']?>)">function......
  • 快速滚动到顶部和底部的js方法
    //平滑的滚动到底部constscrollToBottom=(element)=>element.scrollIntoView({behavior:"smooth",block:"end"});//平滑的滚动到顶部constscrollToTo......
  • 使用PM2将egg.js部署到服务上
    使用PM2将egg.js部署到服务上服务器安装环境Node.jsPM2pm2部署步骤npminstallpm2-gegg.js部署步骤npminitegg--type=simple修改默认端口找到config目录下的conf......
  • js:Object对象按照key的升序排序
    思路:js的Object对象类型,不能直接排序,不过Array是可以排序的将Object类型的key,转为Array排序,再将结果转为Object示例letdata={name:"tom",age:20,};consol......
  • vue安装node-sass提示没有vendor目录及binding.node文件的解决办法
    vue安装node-sass提示没有vendor目录及binding.node文件的解决办法一.异常现象我在网上下载了一个开源的vue项目,然后执行如下命令:npmrundev结果产生如下图所示异常信息:......
  • js大文件上传详解及实例代码
    ​4GB以上超大文件上传和断点续传服务器的实现随着视频网站和大数据应用的普及,特别是高清视频和4K视频应用的到来,超大文件上传已经成为了日常的基础应用需求。但是在很......