Node.js第三方模块

第三方模块

什么是第三方模块?
别人写好的,具有特定功能的模块,我们需要下载才能使用的,就是第三方模块
如何获取第三方模块?
一:点击链接[npmjs.com](https://www.npmjs.com/)
二:在VSCode终端,使用npm命令行下载第三方模块
    npm是随node一起安装的包管理工具,只要安装了node,就可以使用npm.
npm的作用
一:允许用户从npm服务器下载别人写好的第三方模块到本地使用。
二:允许用户从npm服务器下载别人写好的命令行程序到本地使用。
三:允许用户上传自己写好的第三方模块和命令行程序到npm服务器上。
下载模块
格式:npm install 模块名
可以简写为: npm i 模块名
执行以上命令后,会在当前命令行所在的目录下多一个node_moduls文件夹,下载好的第三方模块
就存放在这个文件夹下面。比如下载一个jquery

在这里插入图片描述
下载成功
在这里插入图片描述

卸载模块
格式:npm uninstall 模块名

在这里插入图片描述

nodemon
nodemon是一个命令行工具,用以辅助项目开发,每次修改文件都会自动重新执行该文件,不需要再手动执行。(相当于省去node)
全局安装与本地安装
本地安装:
把模块和命令行按照当前文件夹下,只能在当前目录下使用。第三方包/模块,是安装在本地的。
全局安装:
安装完成后,在命令行中任意目录都可以使用。
格式:npm i 模块名 -g        (命令行工具安装在全局,以便随时调用)

如果提示有错误
在桌面用window+r,输入powershell,执行set-ExecutionPolicy RemoteSigned
在这里插入图片描述

关于nrm源管理器。
mode的服务器在国外,所以下载速度很慢,如果想快速下载,可以使用国内的镜像库。
安装:npm i nrm -g

查看可用的源:nrm ls
在这里插入图片描述
切换源:nrm use 地址名称
在这里插入图片描述
如果提示有错误(地址可能不一样,但是找到cli.js就对)【C:\Users\Administrator\AppData\Roaming\npm\node_modules\nrm\cli.js】,在本电脑找到该地址,并修改第十七行的代码为【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 快速生成
  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" //开源许可证
}

在这里插入图片描述

模块加载机制
1.模块名有路径,并且有后缀
      通过路径,引入相关的模块。
 2.当模块有路径,但是没有后缀的时候
  2.1 会先找路径下同名的js文件。
  2.2 再找路径下同名的文件夹,找文件夹下的index.js
  2.3 如果文件夹下有package.json 会找文件中的main字段 入口文件。
  2.4 如果找不到,就报错。
 3.模块没有路径也没有后缀。
  3.1 node会判断它是否为内置模块,是内置就加载
  3.2 不为内置,则去第三方模块中查找,去node_modules中查找。

在这里插入图片描述

异步和同步
 同步:一次执行一个任务,该任务执行完成后,再执行下一个任务。
 异步:一次可以执行多个任务,当前的任务不会阻塞下一个任务的执行。
 在js中,异步任务(API)会在所有的同步任务完成后才会执行。
 同步函数中可以获取返回值。

在这里插入图片描述
console.log()是一个同步代码,执行fnSync函数时,遇到setTimeout时,setTimeout不会立即执行, fnSync就没有返回值,默认返回undefined。所以,打印的结果是undefined,打印完成后,js中的所有同步代码都执行完了,才会执行setTimeout函数。

有回调函数就是异步么?
	当然不是。回调与同步、异步并没有直接的联系,回调只是一种实现方式,既可以有同步回调,也可以有异步回调,还可以有事件处理回调和延迟函数回调。
	eg:
	同步:刷牙和洗脸,先刷完牙,再洗脸或先洗完脸,再刷牙。
	异步:刷牙的同时去烧水
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值