Node.js — 模块化的基本概念、Node.js中模块化、npm与包、模块的加载机制

本文详细介绍了Node.js的模块化,包括模块化的基本概念、Node.js中的模块分类、作用域及共享机制。接着,探讨了npm和包的相关知识,如包的来源、下载、包管理配置文件、解决下载速度慢的问题,以及包的分类。最后,讨论了Node.js模块的加载机制,包括缓存加载、内置模块和自定义模块的加载规则。
摘要由CSDN通过智能技术生成

目录

一、模块化的基本概念

1.什么是模块化

2.编程领域中的模块化

3.模块化规范

二、Node.js中模块化

1.Node.js中模块的分类 

2.加载模块 

3.Node.js中的模块作用域 

(1).什么是模块作用域

(2).模块作用域的好处

4.向外共享模块作用域中的成员

(1).module对象

(2).module.exports对象

(3).共享成员时的注意点 

(4).exports对象 

(5).exports 和 module.exports 的使用误区

 5.Node.js中的模块化规范

三、npm与包

1.包

(1).什么是包

(2).包的来源

(3).为什么需要包 

(4).从哪里下载包

(5).如何下载包 

2.npm 初体验

(1).格式化时间的传统做法

(2).格式化时间的高级做法 

(3).在项目中安装包的命令

(4).初次装包后多了哪些文件

(5).安装指定版本的包 

(6).包的语义化版本规范 

3.包管理配置文件 

(1).多人协作的问题

(2).如何记录项目中安装了哪些包

(3).快速创建package.json 

(4).dependencies节点 

(5). 一次性安装所有的包

(6).卸载包

(7).devDependencies节点 

4.解决下包速度慢的问题 

(1).为什么下包速度慢

(2).淘宝NPM镜像服务器

(3).切换npm的下包镜像源 

(4).nrm 

5.包的分类

(1).项目包

(2).全局包

(3).i5ting_toc 

6.规范的包结构

7.开发属于自己的包

(1).需要实现的功能

(2).初始化包的基本结构

(3).初始化package.json 

(4).在index.js中定义格式化时间的方法 

(5).在index.js中定义转义HTML的方法

(6).在index.js中定义还原HTML的方法 

 (7).将不同功能进行模块化拆分

(8).编写包的说明文档

8.发布包

(1).注册npm账号

(2).登录npm账号

(3).把包发布到npm上

(4).删除已发布的包

四、模块的加载机制

1.优先从缓存中加载 

2.内置模块的加载机制 

3.自定义模块的加载机制

4.第三方模块的加载机制

5.目录作为模块


一、模块化的基本概念

1.什么是模块化

        模块化是指解决一个复杂问题时,自顶向下逐层把系统划分成若干模块的过程。对于整个系统来说,模块是可组合、分解和更换的单元

 

2.编程领域中的模块化

        编程领域中的模块化,就是遵守固定的规则,把一个大文件拆成独立并相互依赖多个小模块。

把代码进行模块化拆分的好处:

①提高了代码的复用性

②提高了代码的可维护性

③可以实现按需加载

 

3.模块化规范

模块化规范就是对代码进行模块化的拆分与组合时,需要遵守的那些规则

例如:使用什么样的语法格式来引用模块、在模块中使用什么样的语法格式向外暴露成员

模块化规范的好处:大家都遵守同样的模块化规范写代码,降低了沟通成本,极大的方便了各个模块之间相互调用,利人利己。

 

二、Node.js中模块化

1.Node.js中模块的分类 

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

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

 

2.加载模块 

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

//1.加载内置的fs模块
const fs = require('fs')
//2.加载用户的自定义模块,可以省略.js后缀名
const custom = require('./custom.js')
//3.加载第三方模块
const moment = require('moment')

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

 

3.Node.js中的模块作用域 

(1).什么是模块作用域

        和函数作用域类似,在自定义模块中定义的变量、方法等成员,只能在当前模块内被访问这个模块级别的访问限制,叫做模块作用域。

(2).模块作用域的好处

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

 

4.向外共享模块作用域中的成员

(1).module对象

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

(2).module.exports对象

        在自定义模块中,可以使用module.exports对象,将模块内的成员共享出去,供外界使用。

        外界用require()方法导入自定义模块时,得到的就是module.exports所指向的对象

(3).共享成员时的注意点 

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

(4).exports对象 

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

(5).exports 和 module.exports 的使用误区

        时刻谨记,require()模块时,得到的永远都是module.exports指向的对象

使用误区1:

使用误区2:使用误区3: 

 使用误区4:

注意:为了防止混乱,尽量不要在同一模块中同时使用exports 和 module.exports 

 

 5.Node.js中的模块化规范

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

CommonJS规定:

①每个模块内部,module变量代表当前模块。

②module变量是一个对象,它的exports属性(即module.exports)是对外的接口

③加载某个模块,其实是加载该模块的module.exports属性。require()方法用于加载模块 

 

三、npm与包

1.包

(1).什么是包

        Node.js中的第三方模块又叫做

        就像电脑和计算机指的是相同的东西,第三方模块和包指的是同一个概念,只不过叫法不同。

(2).包的来源

        不同于Node.js中的内置模块与自定义模块,包是由第三方个人或团队开发出来的,免费供所有人使用。

注意:Node.js中的包都是免费且开源的,不需要付费即可免费下载使用。

(3).为什么需要包 

        由于Node.js的内置模块仅提供了一些底层的API,导致在基于内置模块进行项目开发时,效率很低。

        包是基于内置模块封装出来的,提供了更高级、更方便的API,极大的提高了开发效率

        包和内置模块之间的关系,类似于jquery和浏览器内置API之间的关系

(4).从哪里下载包

        国外有一家IT公司,叫做npm,Inc.这家公司旗下有一个非常著名的网站:http://www.npmjs.com/,它是全球最大的包共享平台,可以从这个网站上搜索到任何你需要的包。

        到目前为止,全球约1100多万的开发人员,通过这个包共享平台,开发并共享了超过120多万各包供我们使用。

        npm,Inc.公司提供了一个地址为http://registry.npmjs.org/的服务器,来对外共享所有的包,我们可以从这个服务器上下载自己所需要的包

注意:

从http://www.npmjs.com/ 网站上搜索自己所需要的包

从http:/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值