Node.js(笔记07) - 包和包管理工具(npm)
什么是包
Node.js 中的第三方模块又叫做包。
就像电脑和计算机指的是相同的东西,第三方模块和包指的是同一个概念,叫法不同。
包的来源
不同于 Node.js 中的内置模块和自定义模块,包是由第三方个人或团队开发出来的,免费使用。
注意:Node.js 中的包都是免费且开源的,不需要付费即可免费下载使用,香。
为什么需要包
由于Node.js的内置模块仅提供了一些底层的API,导致在基于内置模块进行项目开发时,效率很低。
包是基于内置模块封装出来的,提供了更高级、更方便的 API,极大的提高了开发效率。
包和内置模块之间的关系,类似于 JQuery 和浏览器内置API之间的关系;
哪里下载包
国外有家IT公司,叫 npm,Inc. 这公司旗下网站: https://www.npmjs.com/ 是全全球最大包共享平台。
官方搜 bootstrap 、JQuery、express 等著名插件和框架;
该公司提供了一个地址为 https://registry.npmjs.com 的服务器,来对外共享所有包;
提示:
搜包:https://www.npmjs.com/
下包:https://registry.npmjs.com/
国内镜像(阿里云):https://developer.aliyun.com/mirror/NPM
如何下载包
使用包管理工具,npm(Node Package Manager),这工具随 Node.js 一起安装;
在终端,通过 npm -v
来看下当前 npm 的版本号:
推荐阅读:
NPM 简介、安装、配置、常用方法
npm 初体验
格式化时间的传统做法
1)创建格式化时间的自定义模块
2)定义格式化时间的方法
3)创建补零函数
4)从自定义模块中导出格式化时间的函数
5)导入格式化时间的自定义模块
6)调用格式化时间的函数
代码实现:创建 dateFormat.js
引入模块:
时间格式从原来的
这种实现,需要自己手写个模块,还是比较麻烦。
格式化时间高级做法
1)使用npm,在项目中安装格式化时间的包 moment
2)使用 require() 导入格式化时间的包
3)参考 moment 官方的API 文档对时间进行格式化
安装 moment
引入包
参考文档
NPM官网:https://www.npmjs.com/package/moment
github官网:github.com/moment/moment
moment官网:momentjs.com
使用文档:https://momentjs.com/docs/#/use-it/node-js/
参数文档:https://momentjs.com/docs/#/parsing/string-format/
文档非常详细,这里直接使用:
初次安装包后多了哪些文件
在项止文件夹中多了一个 node_modules 文件夹和 package-lock.json 的配置文件。
node_modules 文件夹
用来存放所有已安装到项目中的包
require() 导入第三方包时,就从这个目录中查找并加载包
package-lock.json 配置文件
用来记录 node_modules 目录下的每一个包的下载信息,如:包名、版本号、下载地址等
看下这个配置文件:
注意:不要手动修改 node_modules 或 package-lock.json 文件中的代码,npm会自动维护它们;
安装指定版本的包
默认情况下,使用 npm install 命令安装包的时候,会自动安装最新版本的包。
如果需要安装指定版本的包,可以在包名之后,通过 @符号
指定具体的版本,如:
当前最新版本是 2.29.4 ,这个 package-lock.json 配置文件中也可以看到。
执行指定版本的安装,不需要卸载原版本,执行完后,可以在 package-lock.json 文件中看到版本已经更新;
查看 moment 最新版本的命令:
显示最新版本是 2.29.4
再执行一次不带版本的安装命令,就可以重新安装回最新版本:
同时 package-lock.json 也自动维护为最新版本信息;
包的语义化版本规范
包的版本号是以“点分十进制”形式进行定义的,总共有三位数字,如: 2.29.4
第一位数字:大版本;
第二位数字:功能版本;
第三位数字:Bug修复版本;
版本号提升的规则:只要前面的版本号增长了,则后面的版本号归零。如:2.29.4 => 2.30.0