目录
一、模块分类
内置模块 :node.js官方提供的例如:fs、path
自定义模块:用户自己创建的.js文件
第三方模块:并非官方提供,也不是用户创建的自定义模块。使用需要先下载
加载模块require()
使用require(),加载模块
内置模块:const fs = require('fs')
自定义模块:const custom = require('./custom.js')// 可以省略后缀名
第三方模块:const moment = require('moment')
注意:使用require()加载其他模块时,会执行被加载模块中的代码
模块作用域
自定义模块中的变量,方法等成员,只能在当前模块内被访问。这种模块级别的访问限制,叫做模块作用域
好处:防止全局变量污染
向外共享模块作用域中的成员
module对象
每个自定义的模块中。都有一个modules对象,它里面存储了和当前模块有关的信息
module.exports
使用 module.exports讲模块内的成员共享出去,外界用require()导入自定义模块时,得到的就是module.exports所指向的对象
exports对象和module.exports指向同一个对象,最终共享的结果,还是以module.exports为准
exports.name = 'gyh'
console.log(module.exports);// { name: 'gyh' }
exports对象和module.exports,使用误区
require()模块,得到的永远都是module.exports
注意:不建议在同一个模块中,同时使用exports对象和module.exports
模块化规范commonJs
Node.js遵循了CommonJs模块化规范,规定了模块的特效和各模块之间如何相互依赖
- 每个模块内部,module变量代表当前模块
- module变量时一个对象,他的exports属性,是对外的接口
- 加载某个模块,其实是加载该模块的module.exports属性,require()方法用于加载模块
二、npm与包
包是什么
包:第三方模块又叫做包,同一个概念,叫法不同
由第三方个人或团队开发,免费使用
基于内置模块封装的,提供了更高级、更方便的API,极大的提高了开发效率
包搜索:https://www.npmjs.com/ 是全球最大的包共享平台
包下载:https://registry.npmjs.org/ 服务器,对外共享所有的包
npm
如何下载包,通过npm
npm -v 检查是否安装npm
安装包命令:
npm install 包完整名称
npm i 包完整名称// 简写
npm i 包完整名称 包完整名称 包完整名称 // 安装多个包
// 使用第三方包
/*
1.使用npm安装第三方包:npm i moment
2.导入,使用第三方包,导入的名称就是装包的名称
*/
const moment = require('moment')
const newDt = moment().format("YYYY-MM-DD hh:mm:ss")
console.log(newDt);// 2022-11-18 03:00:13
安装包以后多了哪些文件
node_modules,存放所有已安装项目中的包,require导入时买就是从这个目录中查找并加载对应的包
.package-lock 记录node_modules目录下的每一个包的下载信息,例如:包名,下载地址,版本号
安装指定版本的包
npm i 包名@版本号 最新的版本会覆盖旧的版本
npm i moment@2.22.2
包的语义化版本规范 三位数字:2.24.0
第一位数字:大版本
第二位数字:功能版本
第三位数字:Bug修复版本
版本号提升规则:只要前面的版本号增长了,后面的版本号就要归零
包管理配置文件 package.json
package.json。在项目根目录中
记录项目中安装了哪些包,从而方便剔除node_modules后,团队成员之间共享项目源代码
node_modules 添加到 .gitignore 忽略文件中
快速创建package.json
在执行命令时所处的目录中
npm init -y
注意:
只能在英文目录下成功运行,不要使用中文,空格
npm i 时,npm包管理工具会自动把包和名称的版本号添加到package.json
dependencies节点
记录npm i 都装了哪些包
devDependencies节点
只在项目开发阶段会用到。项目上线后不会用到,就记录到devDependencies
是否需要安装到devDependencies,包安装方式一般都有
npm i -D 包名
npm i 包名 -D
npm i --save-dev 包名
卸载包
npm uninstall 包名
解决下包速度慢的问题
因为默认时从国外的服务器下载,所以会慢
使用淘宝NPM镜像服务器
切换下包镜像源
#查看当前下包的镜像源
npm config get registry
#将下包的镜像源指向淘宝
npm config set registry=https://registry.npm.taobao.org/
nrm 工具 快速切换,查看下包的镜像源
#-g 全局可用的包
npm i nrm - g
#查看可用的镜像源
nrm ls
#切换镜像源
nrm use taobao
注意npm的版本
包的分类
项目包 安装在项目node_modules 的都是
项目包分为
开发依赖包 devDependencies
核心依赖包 dependencies
全局包
安装时提供了 -g 参数
#安装
npm i 包名 -g
#卸载
npm uninstall 包名 -g
注意:工具性质的,才有全局安装的必要性
是否需要全局安装,官方网站会有提示
i5ting_toc 包把md文档转化为html
npm i -g i5ting_doc
#-o并开打
i5ting_doc -f 要转的md文件路径 -o
规范的包结构
- 包必须以单独的目录存在
- 包的顶级目录下必须包含package.json这个包的管理配置文件
- package.json中必须包含:name,version,main这三个属性,分别是:包名,版本号,包入口