一.模块化
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小时内不能重复删除
//尽量不要上传一些无用的包