Node.js 的模块知识汇总
发布时间 - 2026-01-11 02:48:37 点击率:次在写 Node.js 应用程序的时候,你确实可以把所有代码放在巨大原 index.js 文件中,不在乎你的应用程序会变得多大多复杂。Node.js 解释器不会在意这个事情。但在代码组织方面,你很快就会陷入混乱,不能理解代码,而且难以调试。所以,作为一个人,你应该关心代码的结构。这就是使用模块的原因。

你可以把 Node.js 模块当作 JavaScript 库 —— 是整体代码中你想放在一起的某个部分(比如,函数集),你会想把这部分代码相对独立于代码库中的其它部分,可以把事情区分清楚。
就们我们把袜子放在衣柜一个抽屉,把衬衣放在衣柜的另一个抽屉 —— 我们可以把它们组成一天的着装 ——在代码库中,我们将不同的部分保存在不同的模块中,然后将它们有条不紊地合并成一个应用程序。
内建模块
即使我们不创造任何 Node.js 模块,也有模块可用,因为 Node.js 环境提供了内建模块。我们已经遇到过一个模块,就是在博客中寻找如何使用内建的 SHATWG URL 解析器的时候。
在我们自己的代码文件中,我们需要使用已经存在但是在别处声明的代码 —— 这种情况下,URL类是 Node.js 内置模块url中的一部分。
var URL = require('url').URL;
require('url')让我们可以访问url模块。这个模块定义在哪里,是怎么定义的,对我们来说完全不透明 —— 我们所需要知道的只是它的名称 ——url—— 以及它公开的属性,比如URL。
其它内建的模块直接导出我们需要的属性(通常是 JavaScript 对象)。以http模块为例:
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.end('Hello World!');
}).listen(8080);
这里,请求http模块让我们可以直接访问http对象,我们可以直接使用其方法,比如createServer。
Node 初学者这本书讲述了如何使用 Node.js 写一个完整的 Web 服务器,它就是使用的内建http模块。
外部模块
内建模块随 Node.js 发布,它可以解决很多开发问题,而不需要为每个应用发明新的轮子,但是真正促进 Node.js 编程能力的是由来自 Node.js 社区的开源模块构建起来的庞大生态系统。这些模块也可以集成到我们的代码库中,但是由于它们不是内置的,并且不会随每次安装Node.js 一起安装,所以只在是我们的代码中require是不够的。我们需要先安装包含外部模块的代码库,由于 NPM,Node Package Manager(Node 包管理器) 的存在,这很容易。
请参博客文章,它以如何使用 async 库为例来介绍如何使用外部模块。
此外,Node工匠书还使用了一个章节来介绍了使用 NPM 的细节。
创建你自己的模块
内建模块和外部模块都是别人提供的,但它们不会妨碍你创建自己的 Node.js 模块。
下面的例子创建了一个名为myRandom的模块,它会提供了一个辅助函数,用于返回 0 到 10 之间的数。
文件myRandom.js:
function getRandom(min, max) {
return Math.random() * (max - min) + min;
}
exports.between1and10 = function() {
return getRandom(1, 10);
};
你应该把代码放在自己的myRandom.js文件中。由于此文件存在,并通过exports向外提供属性,另一个文件index.js可以使用导出的功能:
文件index.js:
var myRandom = require('./myRandom.js');
console.log(myRandom.between1and10());
require再次发挥作用,它让本地myRandom模块中导出的属性生效 —— 在这里是指between1and10函数。
注意:虽然模块系统允许公开模块的功能,但它也允许隐藏在模块之外不会用到的功能,只要不通过exports导出就好。即使index.js文件请求了myRandom.js文件,它也不能访问未导出的getRandom函数:
var myRandom = require('./myRandom.js');
console.log(myRandom.getRandom(5, 99));
这会导致 TypeError: myRandom.getRandom is not a function.
通过将实现细节隐藏在模块中,只暴露出需要在其它代码中使用的部分,可以很好的组织你的代码。
# nodejs
# request模块
# path
# 模块
# node.js
# fs模块
# NODE.JS加密模块CRYPTO常用方法介绍
# Node.js模块加载详解
# 跟我学Nodejs(三)--- Node.js模块
# 用C/C++来实现 Node.js 的模块(一)
# node.js使用require()函数加载模块
# 在Windows上安装Node.js模块的方法
# 跟我学Nodejs(二)--- Node.js事件模块
# 内建
# 自己的
# 放在
# 如何使用
# 让我们
# 应用程序
# 库中
# 我们可以
# 你应该
# 为例
# 它也
# 的是
# 都是
# 就会
# 在这里
# 也有
# 很好
# 你可以
# 你会
# 这就是
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率
Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】
如何正确下载安装西数主机建站助手?
惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?
Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
香港服务器建站指南:免备案优势与SEO优化技巧全解析
Laravel如何处理文件下载请求?(Response示例)
Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
香港网站服务器数量如何影响SEO优化效果?
如何在IIS服务器上快速部署高效网站?
香港服务器WordPress建站指南:SEO优化与高效部署策略
三星、SK海力士获美批准:可向中国出口芯片制造设备
Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】
Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
香港服务器部署网站为何提示未备案?
如何用低价快速搭建高质量网站?
Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转
高性能网站服务器配置指南:安全稳定与高效建站核心方案
Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】
Firefox Developer Edition开发者版本入口
非常酷的网站设计制作软件,酷培ai教育官方网站?
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
EditPlus中的正则表达式实战(5)
nodejs redis 发布订阅机制封装实现方法及实例代码
油猴 教程,油猴搜脚本为什么会网页无法显示?
DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解
教你用AI润色文章,让你的文字表达更专业
如何在万网ECS上快速搭建专属网站?
百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏
Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤
微信小程序 require机制详解及实例代码
Java类加载基本过程详细介绍
如何快速建站并高效导出源代码?
Laravel如何优化应用性能?(缓存和优化命令)
EditPlus中的正则表达式 实战(2)
Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践
Laravel如何使用Telescope进行调试?(安装和使用教程)
uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址
Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)
Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】
Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】
宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法
Claude怎样写约束型提示词_Claude约束提示词写法【教程】
Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】
如何快速生成专业多端适配建站电话?
HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】
Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧

