返回顶部
首页 > 资讯 > 前端开发 > node.js >Node.js 的模块知识汇总
  • 946
分享到

Node.js 的模块知识汇总

模块知识Node 2022-06-04 17:06:57 946人浏览 泡泡鱼
摘要

在写 node.js 应用程序的时候,你确实可以把所有代码放在巨大原 index.js 文件中,不在乎你的应用程序会变得多大多复杂。node.js 解释器不会在意这个事情。但在代码组织方面,你很快就会陷入混

在写 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.

通过将实现细节隐藏在模块中,只暴露出需要在其它代码中使用的部分,可以很好的组织你的代码。

--结束END--

本文标题: Node.js 的模块知识汇总

本文链接: https://lsjlt.com/news/12433.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Node.js 的模块知识汇总
    在写 Node.js 应用程序的时候,你确实可以把所有代码放在巨大原 index.js 文件中,不在乎你的应用程序会变得多大多复杂。Node.js 解释器不会在意这个事情。但在代码组织方面,你很快就会陷入混...
    99+
    2022-06-04
    模块 知识 Node
  • Node.js的基本知识简单汇总
    Node.js从2009年诞生至今,已经发展了两年有余,其成长的速度有目共睹。从在github的访问量超过Rails,到去年底Node.jsS创始人Ryan Dalh加盟Joyent获得企业资助,再到今年发...
    99+
    2022-06-04
    基本知识 简单 Node
  • Node.js中的events事件模块知识点总结
    通过对Node的学习及应用,我们知道NodeJS其采用单线程、事件驱动、非阻塞I/O等架构设计,非常适用于高并发、I/O密集型应用。 1. 什么是事件驱动? 事件驱动,简单来说就是...
    99+
    2024-04-02
  • 前端知识总汇
    前端知识总汇 HTML 超文本标记语言 注释 由于 HTML 代码杂乱无章,我们习惯性的用注释来划定区域方便后续的查找 HTML 的文档结构 DOCTYPE html> head 内常用标签 ...
    99+
    2023-08-30
    前端
  • MySql 知识大汇总
    目录 一、常用的数据类型 二、数据库索引 什么是数据库索引 索引的作用 索引是否越多越好 索引的分类 三、sql语句 插入 更新 删除 查询         普通查询         子查询         连表查询 四、常用的一些函数 g...
    99+
    2023-09-07
    mysql 数据库
  • MySQL 索引知识汇总
    MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。 打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。...
    99+
    2022-05-26
    MySQL 索引
  • Linux shell知识点汇总
    实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言...
    99+
    2022-06-04
    知识点 Linux shell
  • mysql基础知识汇总
    本篇内容介绍了“mysql基础知识汇总”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!SQL基础知识整理:s...
    99+
    2024-04-02
  • Pandas-DataFrame知识点汇总
    目录1、DataFrame的创建根据字典创建读取文件2、DataFrame轴的概念3、DataFrame一些性质索引、切片修改数据重新索引丢弃指定轴上的值算术运算函数应用和映射排序和...
    99+
    2024-04-02
  • js重点知识汇总
    这篇文章主要讲解了“js重点知识汇总”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“js重点知识汇总”吧!1、几种数据类型,哪些是值类型,哪些是引用类型数据类...
    99+
    2024-04-02
  • Python Requests库知识汇总
    目录什么是Requests库?为什么要学习Requests库?快速开始发送请求URL传参响应内容二进制响应内容JSON响应内容原始响应内容自定义请求头更复杂的POST请求More c...
    99+
    2023-05-18
    Python Requests库 Python Requests
  • Python基础之logging模块知识总结
    目录前言一、日志级别二、basicConfig三、日志写文件四、traceback记录前言 logging模块是Python内置的标准模块,主要用于输出脚本运行日志,可以设置输出日志的等级、日志保存路径等。 ...
    99+
    2022-06-02
    Python logging模块 python常用模块
  • Pyhton模块和包相关知识总结
    目录一、模块二、模块的搜索顺序三、使模块下方的测试代码在导入时不会执行四、包五、发布模块六、安装模块七、卸载模块八、pip 安装第三方模块一、模块 每一个以扩展名 py 结尾额 Py...
    99+
    2024-04-02
  • SQL必知必会知识点汇总
    前言 ❤欢迎大家阅读我的文章呀❤ 今天是SQL必知必会的最后一块练习。 希望你们在我的文章当中能有所收获!!! SLogan:利用有限的时间,撸起袖子加油干!   本篇内容主要总结了【SQL必知必会】当中的一些知识点以及我做题过程当中...
    99+
    2023-08-24
    sql 数据库 c# mysql
  • redis 基础知识点汇总
    本文涉及的内容参考下面的大纲,另外版本的问题一般都会指出来。 正文 1. 思维导图 简单了做了一个思维导图,详细内容往后看。 2. 详解 下面针对思维导图列出的大纲,展开说明。 2.1 常用的 5 种数据类型 Redis 是基于 C 语言...
    99+
    2014-10-29
    redis 基础知识点汇总
  • Python常用知识点汇总
    1、Set基本数据类型 a、set集合,是一个无序且不重复的元素集合 class set(object): """ set() -> new empty set object set...
    99+
    2022-06-04
    知识点 常用 Python
  • MySQL基础知识点汇总
    本文给大家汇总介绍了mysql的23个基础的知识点,这些都是学习mysql的必备知识,小伙伴们可以参考下。 1.什么是SQL语句 sql语言:结构化的查询语言。(Structured Query...
    99+
    2024-04-02
  • Golang易错知识点汇总
    目录类型转换和类型断言1.类型转换示例代码2.类型断言代码示例全局变量全局变量使用var,编译通过全局变量不使用var,编译不通过init函数Go接口总结Go字符串如何修改字符串的内...
    99+
    2024-04-02
  • Python入门知识点汇总
    Python的设计目标之一是让代码具备高度的可阅读性。它设计时尽量使用其它语言经常使用的标点符号和英文单字,让代码看起来整洁美观。它不像其他的静态语言如C、Pascal那样需要重复书写声明语句,也不像它们的语法那样经常有特殊情况和意外。缩进...
    99+
    2023-01-31
    知识点 入门 Python
  • Python基础之模块相关知识总结
    目录一、什么是模块二、导入模块三、name=‘main'四、搜索路径一、什么是模块 容器 -> 数据的封装 函数 -> 语句的封装 类 ->...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作