node中模块化

news2025/1/22 16:14:22

目录

    • 模块化概念
    • 模块化规范
    • Node.js 中模块的分类
      • 加载模块
    • 模块作用域
      • module对象
        • module.exports 对象
        • exports 对象
    • Node.js中的模块化规范

模块化概念

模块化是指解决一个复杂问题时,自顶向下逐层把系统划分成若干模块的过程。对于整个系统来说,模块是可组合、分解和更换的单元。
编程领域中的模块化,就是遵守固定的规则,把一个大文件拆成独立并互相依赖的多个小模块。
把代码进行模块化拆分的好处:

  • 提高了代码的复用性
  • 提高了代码的可维护性
  • 可以实现按需加载

模块化规范

模块化规范就是对代码进行模块化的拆分与组合时,需要遵守的那些规则。
模块化规范的好处:
大家都遵守同样的模块化规范写代码,降低了沟通的成本,极大方便了各个模块之间的相互调用,利人利己。

Node.js 中模块的分类

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

  • 内置模块(内置模块是由Node.js官方提供的,例如fs、path、http等)
  • 自定义模块(用户创建的每个.js文件,都是自定义模块)
  • 第三方模块(由第三方开发出来的模块,并非官方提供的内置模块,也不是用户创建的自定义模块,使用前需要先下载)

加载模块

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

注意:使用require()方法加载其它模块时,会执行被加载模块中的代码。

模块作用域

防止了全局变量污染的问题

module对象

在每个.js 自定义模块中都有一个module对象,它里面存储了和当前模块有关的信息,打印信息如下:
在这里插入图片描述

module.exports 对象

在自定义模块中,可以使用module.exports对象,将模块内的成员共享出去,供外界使用。
外界用require(方法导入自定义模块时,得到的就是module.exports所指向的对象。
例:
创建一个modedemo01.js

const age = 20 
module.exports.name = 'zs'
module.exports.address = 'cq'
module.exports.helloexports = function() {
    console.log('helloexports')
}

创建一个modetest.js

const modetest = require('./modedemo01')
console.log(modetest.name)
console.log(modetest.address)
console.log(modetest.helloexports)

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

exports 对象

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

console.log(module.exports == exports)

打印结果为true

Node.js中的模块化规范

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

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

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

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

相关文章

SpringBoot的Filter过滤器结合JWT实现登录验证

概念:Filter 过滤器,是 JavaWeb 三大组件(Servlet、Filter、Listener)之一。 过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能。 过滤器一般完成一些通用的操作,比如:登录校验、统一编码处理、敏感字符处理等…

看完这篇文章你就彻底懂啦{保姆级讲解}-----(LeetCode刷题27移除元素) 2023.4.18

目录 前言算法题(LeetCode 27.移除元素)—(保姆级别讲解)分析题目算法思想(重要)暴力解法代码:双指针法(快慢指针法)代码:反思 结束语 前言 本文章一部分内容…

UDP - C/S模型

由于UDP不需要维护连接,程序逻辑简单了很多,但是UDP协议是不可靠的,保证通讯可靠性的机制需要在应用层实现。 通信函数 ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,struct sockaddr *src_addr, socklen_t *addrlen); 参…

无人机动力系统优化测试平台-15kg级-Flight Stand 15

产品简介 通过Flight Stand 15测试台对电机和螺旋桨的拉力,扭矩,转速,电流,电压,温度,空速,螺旋桨效率和电机效率的测量帮助您精准地描述和评估其性能参数,这是我们五年多来的无人机…

[JAVASE]初识Java:数据类型与变量

CSDN的各位友友们你们好,今天千泽为大家带来的是 [JAVASE]初识Java:数据类型与变量、运算符, 接下来让我们一起了解一下吧! 如果对您有帮助的话希望能够得到您的支持和关注,我会持续更新 数据类型与变量 数据类型 在Java中数据类型分为基本数据类型与引用数据类…

15.2 矩阵链乘法

1.代码 public class MatrixChainMultiplication {public static void main(String[] args) { // 在该代码中,我们首先创建了两个n * n的矩阵m和s,分别用于记录最优值和分割点。 其中m 矩阵 通过i j 来显示在i到j的矩阵链中最优解 // // …

JavaSE/异常

博客制作不易,欢迎各位点赞👍收藏⭐关注 前言 在使用Java编写代码时,我们难免会遇到数组越界、运行超时、栈溢出等异常问题。所以如果我们熟练掌握异常的定义和使用,这对我们学习Java有很大的帮助。 一、异常的定义 程序执行过程…

图书馆管理系统【GUI/Swing+MySQL】(Java课设)

系统类型 Swing窗口类型Mysql数据库存储数据 使用范围 适合作为Java课设!!! 部署环境 jdk1.8Mysql8.0Idea或eclipsejdbc 运行效果 本系统源码地址:https://download.csdn.net/download/qq_50954361/87682509 更多系统资源库…

计算机视觉的热门研究方向与发展趋势

计算机视觉产业链 工业界:对学术研究提出需求 最火的两个概念:自动驾驶和元宇宙 相关热点研究方向: (1)建图技术:三维重建技术,包括SLAM、定位、建图、更新等技术;(2&…

学习机器人SLAM导航核心技术(一)

本章节,我们将学习基于SLAM导航的机器人技术。 学习资料主要参照张虎的《机器人SLAM导航核心技术与实战》和高翔的《视觉SLAM十四讲》。 以机器人SLAM导航核心技术与实战作为学习的技术路线。在此基础上增加自己学习到的内容。 第1章:ROS入门必备知识 …

Git介绍与相关操作

git简介 git是用于版本控制的软件,保留历史记录,便于回溯 GitHub中文官方文档 访问GitHub GitHub520 无法访问GitHub太常见了,主要方法就是查ip,改本地host文件。 GitHub520本质也是修改hosts来实现,但是无需手动查…

Pycharm Debug调试技巧

Pycharm Debug调试 Python中的Bug是指程序在执行过程中出现错误的情况。这些错误可能会导致程序崩溃、输出意外的结果或者根本不运行。 常见的Python Bug包括: 语法错误:例如拼写错误、缺少冒号、使用了错误的缩进等等。逻辑错误:程序可以…

草图大师su通过照片建模建筑 零插件sketchup

打开sketchup,相机-匹配新照片。照片的要求: “匹配照片”最适合主要由直角组成的结构。您肯定至少需要一个直角才能使用匹配照片。使用从角落以大约 45 度角拍摄的照片。上图来自谷歌街景图是以 45 度角拍摄的图像示例。如果您正在拍照,则可…

模糊数学求传递闭包(C语言)

一、问题描述 我们在模糊数学中利用传递闭包法进行聚类分析的时候,需要求模糊相似矩阵的传递闭包,对于阶数比较高的矩阵,手工计算太过于繁琐,我们可以借助程序实现。 我们先来看一下模糊矩阵的合成规则: 设为有限论域…

ChatGPT能取代传统伪原创工具吗?

文章伪原创工具是一种计算机辅助写作工具,通过算法和技术实现对原有文章内容进行修改和改写,生成新的、看起来不同于原文的文章,以达到避免抄袭和提高原创性的目的。今天我们来聊聊传统伪原创工具和使用ChatGPT进行文章改写的优缺点。 一、传…

【状态估计】电力系统状态估计的虚假数据注入攻击建模与对策(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

C++ Linux Web Server 面试基础篇-操作系统(一、Linux基础)

⭐️我叫忆_恒心,一名喜欢书写博客的在读研究生👨‍🎓。 如果觉得本文能帮到您,麻烦点个赞👍呗! 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧,喜欢的小伙伴给个三…

SpringBoot访问静态资源和jar外部静态资源,部署前端打包后的vue项目放入静态资源里

记录一下使用SpringBoot访问静态资源和SpringBoot打包之后的jar外部静态资源,在开发的时候,一般选择前后端分离的方式,前端使用vue 后端使用SpringBoot,通常情况下,部署都是前端通过http去请求后端资源,涉及…

CVE-2021-27905 Apache Solr SSRF漏洞

预备知识 1. 漏洞信息 漏洞编号:CVE-2021-27905 漏洞名称:Apache Solr SSRF漏洞 漏洞描述:Apache Solr是一个开源的搜索服务,使用Java编写、运行在Servlet容器的一个独立的全文搜索服务器,是Apache Lucene项目的开源…

在Claude穿越千年,问了孔子人生问题

📕如果大家还不知道Claude的话,可以先了解下,它是chatgpt最大的竞争对手。他有很多的知识,能做的事情也非常的多。 今天我们就让他用孔子的思想来跟我们对话,看看他会怎么回答我们的人生问题。 我们先问问他&#xf…