Node——了解模块化以及npm与包

555 阅读4分钟

一.模块化

1.什么是模块化

就是遵循规则,把一个大文件拆分成独立并相互依赖的多个小模块。

好处:

  • 提高了代码的复用性。

  • 提高了代码的可维护性。

  • 可以实现按需加载。

2.模块的分类

  • 内置模块(由node.js官方提供)。

  • 自定义模块(用户创建的每一个js文件都是自定义模块)。

  • 第三方模块(由第三方提供,需下载使用)。

3.加载模块

需使用require()方法。

例如:

加载内置的fs模块:

const fs = require('fs');

加载用户自定义模块:

const custom = require('./custom.js');

加载第三方模块:

const moment =  require('moment');

注:使用require()加载模块时,会执行被加载模块的代码。

3.模块作用域

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

好处:防止全局变量污染。

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

module对象

存储和当前模块的有关信息。

module.exports对象

可利用module.exports对象将模块内的成员共享出去,供外界使用。

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

exports对象

这是为了简化代码,Node.js提供了exports对象。默认情况下,exports与module.exports指向同一个对象。最终分享结果还是以module.exports所指向的对象为准。

5.模块化规范

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

规定:

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

  • module变量是一个对象,它的exports属性是对外的接口。

  • require()方法用于加载模块。

二.npm与包

1.什么是包

Node.js的第三方模块叫做包。

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

下载地址:(www.npmjs.com/)。

2.npm

安装指定的包,需执行的命令:

npm install 包的名称
//可以将install简写成i

注:如果直接输入npm install 将会安装全部的包。

初次安装后,在项目的文件夹中会多出叫node_modules的文件夹和package-local.json的配置文件夹。

作用:

  • node_modules文件夹用来存放所有已安装到项目的包。

  • package-local.json配置文件夹用来记录node_modules目录下的每一个包的下载信息。

注:请勿手动修改里面的代码。

若要安装指定版本的包请在包的名称后面加上@并写上指定的版本号。

3.包管理配置文件

npm规定,在项目根目录中必须提供一个叫package.json的包管理配置文件,用来记录一些与项目有关的配置信息。

快速创建package.json:

npm init -y

注意:上述只能在英文的目录下运行!

dependencies节点

专门用来记录您使用npm install安装了哪些包。

卸载包

npm unistall 包的名称

注:执行该命令以后,该包会自动在dependencies节点中删除。

devDependencies节点

若包只在项目开发阶段会用到,项目上线后不会用到,则把把包记录在devDependencies节点中。

若包在项目开发和上线都会用到,则把包记录在dependencies节点中。

如何记录到devDependencies节点:

npm install 包名 --save-dev
//简写npm i 包名 -D

4.解决下包慢的问题

使用镜像服务器。

切换npm的下包镜像源

镜像源指的就是下包的服务器地址。

查看当前下包的镜像源:

npm config get registry

切换镜像源:

npm config set registry=http://registry.npm.taobao.org/

检查是否切换成功:

npm config get registry

nrm

能够快速切换镜像源。

安装:

npm i nrm -g

查看所有镜像源:

nrm ls

切换:

nrm use taobao

5.包的分类

项目包:被安装到node—_modules目录中的包叫项目包,又分为开发依赖包和核心依赖包。

全局包:在执行npm install命令时如果添加-g参数,则为全局包。

注:只有工具性质的包才有全局安装的必要。

6.规范的包结构

  • 包必须以单独的目录存在。

  • 必须包括package.json这个包管理配置文件。

  • package.json必须包括name、version、main属性。

7.发布包

上传:

npm publish
//必须从当前根目录执行

删除:

npm unpublish 包名 --force
//只能删除72小时以内上传的包
//24小时内不能重复删除
//尽量不要上传一些无用的包