首先我们要先知道什么是第三方模块以及怎样获取应用
第三方模块就是别人写好的,具有特定功能的模块,我们需要下载才可以使用。
获取第三方模块:npmjs.com 储蓄和分发第三方模块的仓库
在终端中使用npm命令下载第三方模块
npm是随node一起安装的包管理工具,只要安装了node就可以使用npm。
npm的作用:
1.允许用户从npm服务器下载别人写好的第三方模块到本地使用。
2.允许用户从npm服务器下载别人写好的命令行程序到本地使用。
3.允许用户上传自己写好的第三方模块和命令行程序到npm服务器上。
npm下载模块
npm install 模块名 可以简写为npm i 模块名
执行以上命令后,会在当前命令行所在的目录下多一个node-moduls文件夹,下载好的第三方模块就存放在这个文件夹下面。
npm 卸载模块: npm uninstall 模块名
nodemon
nodemon是一个命令行工具,用以辅助项目开发,每次修改文件都会自动重新执行该文件,不需要再手动执行。
全局安装与本地安装
本地安装:把模块和命令行按照到当前文件夹下,只能在当前目录下使用。
第三方包/模块 是安装在本地的
全局安装:安装完成后,在命令行中任意目录都可以使用。
全局安装: 在安装模块时,在后面添加 -g
npm i 模块名 -g
命令行工具安装在全局,以便随时随地调用。
解决方法:1.window+r 输入powershell
2.执行:set-ExecutionPolicy RemoteSigned
使用nrm 源管理器。
node的服务器是在国外的,下载是非常慢的。
如果想要下载的快,可以使用国内的镜像库。
安装:
npm i nrm -g 查看可用的源
nrm ls 切换源
nrm use 地址名称
错误解决方法:
1.根据错误提示,找到cli.js,一般是
C:\Users\Administrator\AppData\Roaming\npm\node_modules\nrm\cli.js
2.将第17行的数据修改为以下代码: const NRMRC = path.join(process.env[(process.platform == 'win32') ? 'USERPROFILE' : 'HOME'], '.nrmrc');
node_modules的问题
如果我们在项目中下载了很多第三方模块,那么别人拷贝你的项目时就会特别的慢。
package.json
每个项目的根目录下,一般都会有一个package.json文件,定义了这个项目需要哪些模块,以及该项目的配置信息(项目名,作者,版本,许可证等)
创建package.json文件
npm init 需要填写配置信息。如果不想填写,直接一路回车。
npm init -y 快速生成
{
"name": "demo", //项目名称
"version": "1.0.0", //项目版本
"description": "", //简介
"main": "index.js", //入口文件
//脚本
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "", //作者
"license": "ISC" //开源许可证
}
package-lock.json 用于锁定版本,防止多人开发时,使用不同的第三方包的版本。
package.json重要字段
dependencies 生产环境依赖模块
devDependencies 开发环境依赖模块
scripts:脚本
一些第三方类库只需要在开发时使用,不需要在生产环境上部署,则可以将它安装在开发环境依赖模块下。
npm install 模块名 -D 开发环境
npm install 模块名 -S 生成环境
yarn也是一个包资源管理器,与npm的功能是一样的。 不过yarn的下载速度更快。
下载使用:
用npm去下载
npm i yarn -g
初始化项目:创建package.json
yarn init
yarn init -y 快速生成
安装单个依赖
yarn add 模块名
安装项目中所有的依赖
yarn install
卸载依赖
yarn remove 模块名
模块加载机制
1.模块名有路径,并且有后缀
通过路径,引入相关的模块。
2.当模块有路径,但是没有后缀的时候
2.1 会先找路径下同名的js文件。
2.2 再找路径下同名的文件夹,找文件夹下的index.js
2.3 如果文件夹下有package.json 会找文件中的main字段 入口文件。
2.4 如果找不到,就报错。
3.模块没有路径也没有后缀。
3.1 node会判断它是否为内置模块,是内置就加载
3.2 不为内置,则去第三方模块中查找,去node_modules中查找。