Node 模块

news2025/1/11 12:47:47

文章目录

  • Node 模块
    • 概述
    • 使用
      • 方式一:module.exports
      • 方式二:exports
    • 目录模块
      • package.json配置
    • 引入模块的基本流程

Node 模块

概述

将一个复杂的程序文件依据一定规则(规范)拆分成多个文件的过程称之为模块化。

其中拆分出的 每个文件就是一个模块 ,模块的内部数据是私有的,不过模块可以暴露内部数据以便其他模块使用。

模块化优点:

  • 防止命名冲突。
  • 高复用性。
  • 高维护性。

使用

方式一:module.exports

定义moduleA.js

function sayHello() {
  console.log("hello");
}

// 使用module.exprots暴露数据
module.exports = sayHello;

使用

// 使用require引入模块
const sayHello = require("./moduleA.js");
sayHello();

定义moduleA.js

const user = {
  name: "小明",
  age: 18,
  sayHello: function () {
    console.log("hello");
  },
};

module.exports = user;

使用

const user = require("./moduleA.js");
user.sayHello();
console.log(user.name);
console.log(user.age);

方式二:exports

定义moduleC.js

// 使用exports暴露数据
exports.sayHello = function () {
  console.log("hello");
};
exports.user = {
  name: "小明",
  age: 18,
};

使用

const { sayHello, user } = require("./moduleC.js");
sayHello();
console.log(user.name);
console.log(user.age);

目录模块

在CommonJS中,我们可以使用目录作为模块,这被称为目录模块。目录模块的作用是将一组相关的模块组织在一起,方便管理和使用。

新建moduleD目录,并在其中新建index.js文件。

index.js

const user = {
  name: "小花",
  age: 28,
  sayHello: function () {
    console.log("hello");
  },
};
module.exports = user;

使用

const user = require("./moduleD");
user.sayHello();
console.log(user.name);
console.log(user.age);

package.json配置

如果导入的路径是个文件夹,会先检查文件夹中是否存在 package.json 文件中 main 属性对应的文件,如果存在则导入,如果不存在则报错。

如果 main 属性不存在,或者 package.json 不存在,则会尝试导入文件夹下的 index.jsindex.json ,如果还是没找到,就会报错。

moduleD 目录中新建 package.json文件,并定义 main 属性。
package.json

{
  "main": "./my.js"
}

my.js

const user = {
  name: "小白",
  age: 38,
  sayHello: function () {
    console.log("hello");
  },
};
module.exports = user;

使用

const user = require("./moduleD");
user.sayHello();
console.log(user.name);
console.log(user.age);

引入模块的基本流程

  1. 将相对路径转为绝对路径,定位目标文件。
  2. 缓存检测。
  3. 读取目标文件代码。
  4. 包裹为一个函数并执行(自执行函数)。通过 arguments.callee.toString() 查看自执行函数。
  5. 缓存模块的值。
  6. 返回 module.exports 的值。

在这里插入图片描述

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

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

相关文章

Identity标识框架配上JWT的使用

在Identity标识框架的代码上继续编写 .Net中的标识框架Identity_风的艺术的博客-CSDN博客 添加NuGet包 Nuget:Microsoft.AspNetCore.Authentication.JwtBearer 创建存储JWT数据类 public class JWTOptions { public string SigningKey { get; set; } pub…

嵌入式51单片机03-数码管系列

文章目录 数码管一、数码管基础知识二、数码管系列代码1. 数码管操作(单个数码管静态显示)(1)仿真电路图(2)源代码(3)实验结果 2. 数码管操作(多个数码管静态显示&#x…

CSDN官方文章MD编辑器文章示例

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

Day950.遗留系统的四化建设 -遗留系统现代化实战

遗留系统的四化建设 Hi,我是阿昌,今天学习记录的是关于遗留系统的四化建设的内容。 对于老旧、过时,但又十分重要、不可替代的遗留系统,是遗留系统。听之任之只会埋下隐患,真正出现问题就为时已晚了。在动手改造遗留…

【蓝桥杯省赛真题39】Scratch棒球本垒打 少儿编程scratch图形化编程 蓝桥杯省赛真题讲解

目录 scratch棒球本垒打 一、题目要求 编程实现 二、案例分析 1、角色分析

托福高频真词List01 // 附阅读真题

4月18日单词 🍮segregateseparateV.隔离🍮leftover remainingadj.剩余的 🍮rivalcompetitor 🍮rivalcompete n.对手🍮 v.对抗🍮 apparentlyseeminglyadv.显然 🍮unrivaledunequaledadj.无与伦…

Create a Process for Managing Support Cases

文章目录 前言&学习目标学习目标背景 一,Create Support Processes1.创建用户2.创建Processes3.创建Record Types4.创建升级规则(Escalation Rule) 前言&学习目标 记录trailhead学习重点,创建管理支持个案的流程,简化工作流并用新的…

mysql企业级安装部署(保姆级别教程)

前言 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系…

Spring——利用五大类注解和Bean注解实现更简单的存储

目录 一、配置扫描路径 二、使用注解存储Bean对象 2.1 Controller(控制器存储) 2.1.1 bean标签是否可以和component-san一起使用呢? 2.2 Service(服务存储) 2.3 Repository 2.4 Component 2.5 Configuration 2.6 五大类注解可以不在…

27岁,测试在职近5年,月薪不到2W,担心被应届生取代

工作了近5年,一个月工资不到20K,担心被应届毕业生取代!互联网的快速发展伴随着员工适者生存的加速,测试员的薪资也在不断增长,以3年、5年、8年为一条分水岭。如果人们的能力和体力不够,他们就会被淘汰。看起…

Android添加C++/CPP项目代码(2)

Android添加C/CPP项目代码(2) (1)选中某个module,右键,Add C to Module 在随后弹出的选项框中选第一个,OK。 (2)此时会在app下产生一个cpp目录和两个文件: x…

TiDB实战篇-BR进行数据备份与恢复

简介 使用BR进行数据备份与恢复。 原理 Backup备份的时候在PD上面找到表的元数据,然后找到对应的TiKV数据以后,直接备份到外部系统中(注意如果没有像HDFS这样的分布式文件存储,那么它每个TiKV备份到本地的文件就只有一部分数据&…

nssctf web 入门(10)

[NISACTF 2022]midlevel [NISACTF 2022]midlevel 尝试使用x-forwarded-for 发现可行判断是不是ssti 确定是ssti模板注入 [NISACTF 2022]is secret [NISACTF 2022]is secret 根据这个我们去看看secret 这里看到这个猜测是通过get传入secret的值然后会机密我们的值 我们发现传…

优秀软件方法学“漫游记”

你好,我是东(在极客时间的 ID 是 Fredo)。大学的时候我读的是计算机专业,现在是一名工作了近3年的程序员,很高兴能和你分享我的学习体会。 我是怎样学习课程的? 首先聊聊我是怎么学习这门课的。 DDD 是一…

智网工程师培训一些心得

智网工程师培训一些心得 MYSQLApache Flask开发小程序 MYSQL MYSQL的日期如果定义为datetime类型,比较的时候可以使用 entry_form.exercise_date between 2022-1-1 and 2023-4-19 日期可以是非2位宽对齐方式 日期比较也可以使用大于或者小于号MYSQL支持定时备份数…

学习数据结构第6天(栈的基本概念)

栈的基本概念 栈的定义栈的基本操作栈的存储结构 栈的定义 栈(Stack)是一种基于先进后出(FILO)或者后进先出(LIFO)的数据结构,是一种只允许在一端进行插入和删除操作的特殊线性表。 栈按照先进后出的原则存储数据,先进入的数据被压入栈底,最…

数据结构初阶(链表)

文章目录 一、链表的基础概念1.1 什么是链表1.2 分类1.3 链表的底层代码1.4 例题1.5 LinkedList 的实现(1)什么是LInkedList(2)底层代码(3)LinkedLIst的使用 1.6 ArrayList和LinkedList的区别 一、链表的基…

Spring底层架构核心概念

文章目录 Spring底层架构核心概念BeanDefinitionBeanDefinitionReaderAnnotatedBeanDefinitionReaderXmlBeanDefinitionReaderClassPathBeanDefinitionScanner BeanFactoryApplicationContext国际化资源加载获取运行时环境事件发布 类型转换PropertyEditorConversionServiceTyp…

20行Python代码获取 心碎榜单文件保存本地,准备开始emo......

人生苦短 我用python(emo版) (语气充满悲伤…) 今天咱们试试只用20行代码来实现 批量获取 某某云 文件保存本地,炒鸡简单! 悄悄的告诉你,其实不到20行代码~ 事前准备 软件环境 环境Python3.8编辑器是pycharm 模块…

轻松掌握k8s的kubectl使用命令行操作01知识点

程序员使用的kubectl,只能在主节点使用kubectl命令 1、查看集群所有节点 kubectl get nodes 2、根据配置文件,给集群创建资源 kubectl apply -f xxxx.yaml 3、查看集群部署了哪些应用 kubectl get pods -A 4、指定查看命名空间部署了哪些应用 不指…