5.Node中的模块

news2025/6/15 23:38:32

目录

1  模块化

2  加载模块

3  模块作用域

4  module对象

4.1  初识module对象

4.2  module.exports

4.2.1  module.exports与require()

4.2.2  添加变量与方法

5  exports对象

5.1  初识exports对象

5.2  添加变量与方法


1  模块化

向我们之前引入的 fs,path,http 这些都是模块,每个模块干不同的事情

模块分为内置模块,自定义模块与第三方模块。

  • 内置模块,官方的模块,像fs,path,http
  • 自定义模块,自己写的js文件
  • 第三方模块,非官方的别人写的js文件,也叫包

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

CommonJS中的一些规范

  • 每个模块内部,用module变量代表当前模块
  • module变量是一个对象,它的exports属性是对外的接口
  • 加载某个模块实则是加载该模块的module.exports属性。require()方法用于加载模块

2  加载模块

我们用require函数加载模块,内置模块和第三方模块我们都这样加载

自定义模块我们加载一个看一下

我当前有一个需要加载的模块.js,内容为console.log(1)

然后在同级目录下创建 2.加载自定义模块.js 进行引用,其他什么都不做

发现引用的内容被执行了

使用require方法加载包也可以不写 .js

效果一样

3  模块作用域

在自定义模块中定义一个全局变量

在被引用的文件中也可以正常使用

但如果要定义一个局部变量就使用不了了,我们把关键字都用上看一下

发现 var const let 都不行

所以当你自己写模块的时候最好不要用全局变量,那样会影响别的代码

4  module对象

4.1  初识module对象

module对象是node.js中的内置对象,我们打印出来看一下

其中 path是该文件所处的路径,filename是文件所处的路径再加一个文件名

4.2  module.exports

可以通过module.exports将模块内的变量与函数共享出去

4.2.1  module.exports与require()

外界使用require()方法导入的自定义模块,实际上就是module.exports指向的对象

如果被导入的模块module.exports中没有东西

那就会返回一个空对象

如果有东西就可以看到module.exports中的内容

4.2.2  添加变量与方法

可以给自定义模块定义一些变量或方法

 

这样就能打印出来一些东西

导入后就可以调用了

也可以这样添加,总的来讲保证module.exports是一个对象就行

  • 如果有冲突,下面的会覆盖掉上面的,像我这样重新定义了module.exports,那么重新定义的module.exports就会覆盖上面全部

同样可以使用

5  exports对象

5.1  初识exports对象

因为module.exports太长了,所以node提供了一个exports对象。功能与module.exports相同,默认情况下exports与module.exports指向相同的对象

你可以在任意的文件中打印出来看一下

可以使用 === 来判定exports与module.exports目前是否为同一个对象,true表示目前是同一个对象

5.2  添加变量与方法

与module.exports方法相似

我们用一下看看

使用require导入模块永远得到的是module.exports对象的内容,默认情况下指向的对象相同所以无所谓,现在我们更改module.exports的对象

使用的代码不变

发现myModule中只有我们刚刚定义的对象,没有后面exports定义的username与add_one

可以通过下面四个例子加深一下exports与module.exports的理解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/104515.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Baklib|为什么说企业需要重视客户体验?

数十年来,人们都在寻求使自己的品牌获得成功的秘密,企业和品牌也在不断地想着怎样在竞争中胜出,从而获得顾客的青睐。 有些公司已经竭尽全力争取顾客的信赖,并竭力争取更多的市场份额。 但是,即便那些著名的公司不会…

5G无线技术基础自学系列 | RF优化原理

素材来源:《5G无线网络规划与优化》 一边学习一边整理内容,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 RF优化主要是依据各种收集到的数据&…

C++ Primer 第五章 Statements

C Primer 第五章 Statements5.3. Conditional Statements5.3.2. The switch Statement5.4. Iterative Statements5.4.3. Range for Statement5.6. try Blocks and Exception Handling5.6.1. A throw Expression5.6.2. The try Block5.6.3. Standard Exceptions5.3. Conditional…

【传递窗】洁净区与非洁净室之间的传递

广州特耐苏净化设备有限公司详细介绍:传递窗分类及安装与使用方法 传递窗是一种洁净室的辅助设备,用于不同的洁净区之间,洁净区与非洁净区之间小物件的传递,具有气闸的作用,防止非洁净的空气进入洁净室。同时&#xf…

git cherry-pick 同步修改到另一个分支

我们在开发中有时会遇到,需要将另一个分支部分修改同步到当前分支。 如下图,想把 devA 分支中 commit E 和 F,同步到下面绿色的 devB 分支中。 这时候就可以使用 git cherry-pick 来完成这项任务。 (cherry-pick 有筛选、精选的…

音视频开发——H265码流解析

概述 H.265技术的应用 编码技术主要运用于视频播放设备、软件应用以及拍摄、录制视频的设备。人们最熟悉的莫过于PPS网络视频播放器。在PC屏客户端产品上面,PPS已经于2013年初推出了基于H.265标准的高清视频,并命名“臻高清”为自己的高清品牌。同时 P…

极限一个月,突破Java高频面试题和核心技术,跳槽涨薪6K

前言 先说一下我的情况,双非本科毕业后就在几家小公司工作了3年,5月份的时候有去大厂面试过,结果都是凉凉,下面会跟大家分享一下我的经验以及建议。 有的朋友可能会认为学历是自己的问题,面试官连简历都不会看。其实…

Java Stream 编程

Java Stream 编程 教程&#xff1a;https://www.bilibili.com/video/BV1te411w722 1. 不可变集合 1.1 不可变集合应用场景 元数据&#xff0c;只允许查询的数据集合 1.2 创建不可变集合 List、Set、Map 接口中的静态方法 of() List<String> list List.of("张…

SpringCloud 2021版本教程:使用nacos作为注册中心和配置中心(2021版本+Boot2.7.6)

目录 前言 系列文章目录 一、什么是Nacos 1、nacos架构原理 2、nacos、eureka、zookeeper的区别 1、参考博客&#xff0c;写得很详细通俗易懂&#xff1a;一文说清eureka、zookepeer、nacos三者的关系 - 知乎 2、三者区别&#xff1a; 3、CAP原理&#xff1a; 二、项目…

MyBatis八股文

1、什么是MyBatis框架&#xff1f; MyBatis 是一款优秀的持久层框架&#xff0c;它支持定制化 SQL、存储过程以及高级映射&#xff0c;它内部封装了jdbc&#xff0c;不需要我们再写JDBC连接、使开发者只需要关注sql语句本身和业务&#xff0c;而不需要花费精力去处理加载驱动、…

【数据结构】基础:常见排序算法

【数据结构】基础&#xff1a;常见排序算法 摘要&#xff1a;本文将从排序的概念及其附属概念出发&#xff0c;再对排序算法进行分类&#xff0c;并对其思想与实现进行说明&#xff0c;最后对各个算法进行总结。 文章目录【数据结构】基础&#xff1a;常见排序算法一. 排序的概…

K8s CRD 和 Operator 来进行 NebulaGraph 的部署

中间件及运维管理 我们基于 K8s CRD 和 Operator 来进行 NebulaGraph 的部署&#xff0c;同时通过服务集成到现有的部署配置页面和运维管理页面&#xff0c;来获得对 Pod 的执行和迁移的控制能力。基于 sidecar 模式监控、收集 NebulaGraph 的核心指标并通过 Telegraf 发送到携…

【第十四章 错误日志,二进制日志,查询日志,慢查询日志】

第十四章 第十四章 错误日志&#xff0c;二进制日志&#xff0c;查询日志&#xff0c;慢查询日志 1.错误日志&#xff1a; ①错误日志是 MySQL 中最重要的日志之一&#xff0c;它记录了当 mysqld 启动和停止时&#xff0c;以及服务器在运行过程中发生任何严重错误时的相关信息…

Servlet还不会?那就看这篇文章吧

一. Servlet是什么? Servlet是Server Applet的简称&#xff0c;也就是服务程序。当然&#xff0c;杨哥习惯称它为"服务连接器"。 像上面这么说&#xff0c;大家可能会有所疑惑&#xff1a;什么是服务程序&#xff1f;可能有些人对这个还是不太懂&#xff0c;那么接下…

我国汽车配件行业需求空间较大 国产品牌配件市场份额逐渐提升

根据观研报告网发布的《2022年中国汽车配件行业分析报告-行业全景调研与发展战略咨询》显示&#xff0c;根据Markline全球汽车信息平台统计&#xff0c;2020年&#xff0c;全球整车市场产量规模约为7769.80万辆。对于整车厂而言&#xff0c;在委托上游制造商按照要求供应零部件…

软文营销对企业品牌推广的好处有哪些?

众所周知&#xff0c;互联网改变了我们的生活&#xff0c;他的横空出世一度改变我们的工作模式&#xff0c;又跟我们生活息息相关。如今&#xff0c;随着网络的深入发展&#xff0c;网络对企业的营销模式也产生了巨大的改变。其中网络软文营销成为了当下众多企业的主要营销手段…

Web漏洞扫描-Appscan安装配置及扫描

软件介绍 AppScan 是一种 Web 应用程序安全扫描工具&#xff0c;可帮助组织识别和修复其 Web 应用程序中的漏洞。它结合使用自动和手动测试技术来识别漏洞&#xff0c;例如跨站点脚本 (XSS)、SQL 注入和不安全的文件上传等。 AppScan 可用于在开发生命周期的不同阶段扫描 Web…

Unity 摄像机

摄像机分为两种 &#xff08;1&#xff09;透视摄像机 &#xff08;2&#xff09; 正交摄像机 一般3D游戏使用的透视多一点&#xff0c;2D游戏使用正交多一点。 相机参数 清除标记&#xff1a; &#xff08;1&#xff09;天空盒 &#xff08;2&#xff09;仅深度&#xff…

Problem J. Prime Game(数学 贡献)[2018-2019 ACM-ICPC, Asia Nanjing Regional Contest]

题目如下&#xff1a; 题解 or 思路 我们可以发现暴力去求解是无法完成的 O(n2)O(n^2)O(n2) 我们可以从贡献出发&#xff0c;计算每一个位置上的质因子所做的贡献 我们可以先通过分解质因子&#xff0c;记录每一个质因子的位置&#xff0c;在这里使用 vectorvectorvector 容器…

力扣(LeetCode)1760. 袋子里最少数目的球(C++/C)

二分查找 直观思维是对每个袋子进行分球操作&#xff0c;这样枚举似乎无从下手。逆向思维&#xff0c;从 111 开始&#xff0c;枚举袋子里球的最大数量&#xff0c;可以计算划分每个袋子需要的最小次数&#xff0c;通过最小次数之和&#xff0c;判断方案是否可行。由于从小到大…