第三方模块是指别人写好的,具有特定功能的模块就是第三方模块,我们需要下载才能使用
获取第三方模块 npm js.com
存储和发布第三方模块的仓库,
是有npm命令行,npm是随node一起安装的,只要安装node,就可以使用npm;
npm作用:
1.允许用户 从npm服务器下载别人写好的第三方模块到本地
2.允许用户从npm服务器下载别人写好的命令行程序到本地使用
3.允许上传自己写好的第三方模块和命令行程序到npm服务器上
npm下载模块,
可以简写为 npm i 模块名
npm install 模块名,执行以上命令后全在当前命令行所在的目录下会多一个node_modules文件夹;下载好的第三方模块就存放在这个文件架下面
npm卸载模块
npm uninstall 模块名
nodemon
nodemon是一个命令行工具,用以辅助开发,每次修改文件都会自动重新执行新文件,不需要手动执行
nodemon全局安装与本地安装
本地安装:把模块和命令行按照当前文件夹下,只能在当前目录下使用,第三方模块是安装在本地
全局安装:在安装模块时,在后面添加-g npm i 模块名 -g
命令行工具,在安装全局以便随时随地调用
安装全局后输入:如:nodemon 1.js
若出现错误
加载错误:
widow+r 输入powershell
执行:set-Executionpolicy RemoteSigned
使用nrm源管理器
node的服务器是国外的,下载是非常慢的,如果想要下载的快,可以使用国内的镜像库
镜像库安装
nrm i nrm -g
查看可用的源 nrm ls
错误解决的方法,一般是:
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');
cnpm淘宝的镜像源下载工具
下载 npm i cnpm -g
node_modules的问题:
如果在项目中下载很多的第三方模块,哪么别人拷贝你的项目就会特别的慢
每一个项目的根目录下,一般都会有一个package.json文件,定义了这个项目需要哪些模块,以及该项目的配置信息,(项目名,作者,版本,许可证)
创建package.json文件,通过 npm init -y快速生成
package-lock.json 用于锁定版本,防止多人开发时,使用不同的第三方包的版本。
* package.json重要字段
* dependencies 生产环境依赖模块
* devDependencies 开发环境依赖模块
* scripts:脚本
*
* 一些第三方类库只需要在开发时使用,不需要在生产环境上部署,则可以将它安装在开发环境依赖模块下。
* npm install 模块名 -D 开发环境
* npm install 模块名 -S 生成环境
*
{
"name": "demo", //项目名称
"version": "1.0.0", //项目版本
"description": "", //简介
"main": "index.js", //入口文件
//脚本
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "", //作者
"license": "ISC" //开源许可证
}
yarn
yarn是一个包资源管理器与npm的功能是一样的,yarn的下载速度更快
下载使用:用npm下载
npm i yarn -g
检查是否成功:yarn -v
初始化项目:创建package.json
yarn init
yarn init -y快速生成
安装单个依赖
yarn add 模块名
安装项目中所有的依赖
yarn install
卸载依赖:
yarn remove 模块名
脚本:
script
启动:npm run +名
脚本设置:
"script":{
"key":"value"
}
key:启动的命令名
value:执行的命名
运行:npm run key
模块加载的机制
模块加载的机制分为三种情况
1.模块名有路径,并且有后缀名,通过路径,引入相关的模块
2.当模块有路径,但是没有后缀的时候,
2.1会先找路径下同名的js文件
2.2再找路径下同名的文件夹
2.3如果文件下有package.json会找文件中的main字段入口文件
2.4如果找不到就会报错
3.模块没有路径,也没有后缀
3.1node会判断他是否为内置模块,是内置就加载
3.2不为内置,则去第三方模块中去查找,去node_modules中查找
JPROMISE
同步与异步
同步:一次执行一个任务,该任务执行完在执行下一个,
异步:一次可以执行多个任务,当前的任务不会阻塞下一个任务的执行,
在js中异步任务中(API)会在搜有的同步任务完成后才会执行
log是一个同步代码,执行完函数时遇到setTimeout时,不会立即执行函数
callback
回调函数:将函数作为参数传入执行的函数中,在合适的时候调用,(执行完)回(来)调(用)
利用callback函数回调函数来获取异步函数的返回值。