node.js的模块化 与 CommonJS规范

2024-04-02 08:28

本文主要是介绍node.js的模块化 与 CommonJS规范,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 一、node.js的模块化

(1)什么是模块化?

将一个复杂的程序文件依据一定的规则拆分成为多个文件的过程就是模块化

在node.js中,模块化是指把一个大文件拆分成独立并且相互依赖的多个小模块,将每个js文件被认为单独的一个模块;模块之间是互相不可见的,如果一个模块需要使用另一个模块,则需要使用指定的语法来引入模块,并且只能引入模块所暴露的内容

语法 :   const 变量名 = require('模块的路径');

(2)什么是模块化项目?

编码是按照模块一个一个编码的,整个项目就是一个模块化的项目

(3)模块化的好处?

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

二、node.js的模块化代码初体验

(1)两种暴露数据的方式

方式一:module.exports=value
方式二:module.name=value

代码示例:我建两个文件夹

文件夹一的内容:

// 调用初体验2.js里面的函数
// 一.导入模块
const first=require('./36-1初体验2');// 二.调用函数
// 方式一:module.exports=value
// (1)调用函数first
first();
//输出结果为:我是初体验2里面的内容1
// (2)调用函数second、third
first.second();   
first.third();
//输出结果为:我是初体验2里面的内容2  我是初体验2里面的内容3// 方式二:module.name=value
// (1)调用函数second、third
console.log(first);
//输出结果为:{ sc: [Function: second], th: [Function: third] }

文件夹二的内容:

// 一、声明函数 下面我声明三个函数来依次举例:
function first(){console.log('我是初体验2里面的内容1');
}
function second(){console.log('我是初体验2里面的内容2');
}
function third(){console.log('我是初体验2里面的内容3');
}
// 二、暴露数据
// 方式一:module.exports=value
// (1)暴露数据first:
module.exports=first;   //我是初体验2里面的内容1
// (2)暴露数据second和third:
module.exports={second,third
}
// 方式二:module.name=value
// (1)暴露数据second和third:
exports.sc=second;
exports.th=third;

(2)注意点

1》module.exports可以暴露任何数据

文件夹two:

module.exports="love";
module.exports="爱";
module.exports="520";

文件夹one

const a=require('./two');
console.log(a);

分别将文件夹two的数据输出,运行文件夹one的结果显示:

2》不能使用exports=value的形式暴露数据

文件夹two:

exports='love'

文件夹one:

const a=require('./two');
console.log(a);

运行文件夹one的结果显示:

3》模块内部module与exports有隐式关系 exports=module.exports={ }

文件夹two:

console.log(exports);
console.log(exports===module.exports);

运行文件夹two的结果显示:

三、 CommonJS规范

(1)什么是CommonJS规范?

CommonJS规范最初是为Node.js设计的,但现在也在其他环境中得到广泛应用。它用于模块化编程的一种标准。它提供了一种方式来定义模块,以及如何在不同的node.js环境中共享和重用这些模块。

CommonJS规范提供了一种简单而一致的方式来组织和管理node.js代码中的模块。这使得在不同环境中重用和共享代码变得更加容易

(2)关于CommonJS规范的一些关键操作

1.定义模块

在CommonJS中,每个文件都被视为一个模块。你可以通过module.exportsexports对象来导出模块的公共API。

module.exports、exports、require..都是模块化规范中的内容。

node.js实现了CommonJS模块化规范,它们二者关系就等同于javascript与ECMAScript

2.引入模块

使用require函数来引入其他模块

3.模块标识

在CommonJS中,模块的标识是文件的路径。当你使用require函数时,它会根据传入的路径来查找并加载相应的模块

4. 模块加载

当模块被首次require时,它会被加载并执行。CommonJS模块系统提供了同步加载的机制,这意味着在模块被加载之前,代码的执行会暂停

5. 模块缓存

一旦模块被加载,它就会被缓存起来。这意味着多次require同一个模块会返回第一次加载时的结果,而不是重新加载和执行模块

6.错误处理

如果require函数无法找到指定的模块,它会抛出一个错误。在Node.js中,这通常会导致进程退出

7. 模块系统扩展:

虽然CommonJS规范定义了模块的基本行为,但具体的实现可能会因环境而异。例如,Node.js提供了许多内置模块,如fshttp等,这些模块提供了与底层系统交互的功能

这篇关于node.js的模块化 与 CommonJS规范的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/869477

相关文章

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

nvm如何切换与管理node版本

《nvm如何切换与管理node版本》:本文主要介绍nvm如何切换与管理node版本问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录nvm切换与管理node版本nvm安装nvm常用命令总结nvm切换与管理node版本nvm适用于多项目同时开发,然后项目适配no

kotlin中的模块化结构组件及工作原理

《kotlin中的模块化结构组件及工作原理》本文介绍了Kotlin中模块化结构组件,包括ViewModel、LiveData、Room和Navigation的工作原理和基础使用,本文通过实例代码给大家... 目录ViewModel 工作原理LiveData 工作原理Room 工作原理Navigation 工

通过Python脚本批量复制并规范命名视频文件

《通过Python脚本批量复制并规范命名视频文件》本文介绍了如何通过Python脚本批量复制并规范命名视频文件,实现自动补齐数字编号、保留原始文件、智能识别有效文件等功能,听过代码示例介绍的非常详细,... 目录一、问题场景:杂乱的视频文件名二、完整解决方案三、关键技术解析1. 智能路径处理2. 精准文件名

Node.js net模块的使用示例

《Node.jsnet模块的使用示例》本文主要介绍了Node.jsnet模块的使用示例,net模块支持TCP通信,处理TCP连接和数据传输,具有一定的参考价值,感兴趣的可以了解一下... 目录简介引入 net 模块核心概念TCP (传输控制协议)Socket服务器TCP 服务器创建基本服务器服务器配置选项服

mac安装nvm(node.js)多版本管理实践步骤

《mac安装nvm(node.js)多版本管理实践步骤》:本文主要介绍mac安装nvm(node.js)多版本管理的相关资料,NVM是一个用于管理多个Node.js版本的命令行工具,它允许开发者在... 目录NVM功能简介MAC安装实践一、下载nvm二、安装nvm三、安装node.js总结NVM功能简介N

前端原生js实现拖拽排课效果实例

《前端原生js实现拖拽排课效果实例》:本文主要介绍如何实现一个简单的课程表拖拽功能,通过HTML、CSS和JavaScript的配合,我们实现了课程项的拖拽、放置和显示功能,文中通过实例代码介绍的... 目录1. 效果展示2. 效果分析2.1 关键点2.2 实现方法3. 代码实现3.1 html部分3.2

JS 实现复制到剪贴板的几种方式小结

《JS实现复制到剪贴板的几种方式小结》本文主要介绍了JS实现复制到剪贴板的几种方式小结,包括ClipboardAPI和document.execCommand这两种方法,具有一定的参考价值,感兴趣的... 目录一、Clipboard API相关属性方法二、document.execCommand优点:缺点:

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

使用Vue.js报错:ReferenceError: “Vue is not defined“ 的原因与解决方案

《使用Vue.js报错:ReferenceError:“Vueisnotdefined“的原因与解决方案》在前端开发中,ReferenceError:Vueisnotdefined是一个常见... 目录一、错误描述二、错误成因分析三、解决方案1. 检查 vue.js 的引入方式2. 验证 npm 安装3.