就像电脑和计算机指的是相同的东西 , 第三方模块和包指的是同一个概念 , 只不过叫法不同 。
2、包的来源
不同于 Node.js 中的内置模块与自定义模块 , 包是由第三方个人或团队开发出来的 , 免费供所有人使用 。
注意:Node.js 中的包都是免费且开源的 , 不需要付费即可免费下载使用 。
3、为什么需要包
由于 Node.js 的内置模块仅提供了一些底层的 API , 导致在基于内置模块进行项目开发的时 , 效率很低 。
包是基于内置模块封装出来的 , 提供了更高级、更方便的 API , 极大的提高了开发效率 。
包和内置模块之间的关系 , 类似于 jQuery 和 浏览器内置 API 之间的关系 。
4、从哪里下载包
国外有一家 IT 公司 , 叫做 npm, Inc. 这家公司旗下有一个非常著名的网站: www.npmjs.com/ , 它是全球最大的包共享平台 , 你可以从这个网站上搜索到任何你需要的包 , 只要你有足够的耐心!
到目前位置 , 全球约 1100 多万的开发人员 , 通过这个包共享平台 , 开发并共享了超过 120 多万个包 供我们使用 。
npm, Inc. 公司提供了一个地址为 registry.npmjs.org/ 的服务器 , 来对外共享所有的包 , 我们可以从这个服务器上下载自己所需要的包 。
注意:
从 www.npmjs.com/ 网站上搜索自己所需要的包
从 registry.npmjs.org/ 服务器上下载自己需要的包
5、如何下载包
npm, Inc. 公司提供了一个包管理工具 , 我们可以使用这个包管理工具 , 从 registry.npmjs.org/ 服务器把需要的包下载到本地使用 。
这个包管理工具的名字叫做 Node Package Manager(简称 npm 包管理工具) , 这个包管理工具随着 Node.js 的安装包一起被安装到了用户的电脑上 。
大家可以在终端中执行 npm -v 命令 , 来查看自己电脑上所安装的 npm 包管理工具的版本号:
文章插图
3.2 npm 初体验
1、在项目中安装包的命令
如果想在项目中安装指定名称的包 , 需要运行如下的命令:
npm install 包的完整名称上述的装包命令 , 可以简写成如下格式:
npm i 包的完整名称2、初次装包后多了哪些文件
初次装包完成后 , 在项目文件夹下多一个叫做 node_modules 的文件夹和 package-lock.json 的配置文件 。
其中:
node_modules 文件夹用来存放所有已安装到项目中的包 。 require() 导入第三方包时 , 就是从这个目录中查找并加载包 。
package-lock.json 配置文件用来记录 node_modules 目录下的每一个包的下载信息 , 例如包的名字、版本号、下载地址等 。
注意:程序员不要手动修改 node_modules 或 package-lock.json 文件中的任何代码 , npm 包管理工具会自动维护它们 。
3、安装指定版本的包
默认情况下 , 使用 npm install 命令安装包的时候 , 会自动安装最新版本的包 。 如果需要安装指定版本的包 , 可以在包名之后 , 通过 @ 符号指定具体的版本 , 例如:
npm i moment@2.22.24、包的语义化版本规范
包的版本号是以“点分十进制”形式进行定义的 , 总共有三位数字 , 例如 2.24.0
其中每一位数字所代表的的含义如下:
第1位数字:大版本
第2位数字:功能版本
第3位数字:Bug修复版本
版本号提升的规则:只要前面的版本号增长了 , 则后面的版本号归零 。
3.3 包管理配置文件
npm 规定 , 在项目根目录中 , 必须提供一个叫做 package.json 的包管理配置文件 。 用来记录与项目有关的一些配置信息 。 例如:
- 项目的名称、版本号、描述等
项目中都用到了哪些包
哪些包只在开发期间会用到
那些包在开发和部署时都需要用到
遇到的问题:第三方包的体积过大 , 不方便团队成员之间共享项目源代码 。
解决方案:共享时剔除node_modules
2、如何记录项目中安装了哪些包
在项目根目录中 , 创建一个叫做 package.json 的配置文件 , 即可用来记录项目中安装了哪些包 。 从而方便剔除 node_modules 目录之后 , 在团队成员之间共享项目的源代码 。
注意:今后在项目开发中 , 一定要把 node_modules 文件夹 , 添加到 .gitignore 忽略文件中 。
3、快速创建 package.json
npm 包管理工具提供了一个快捷命令 , 可以在执行命令时所处的目录中 , 快速创建 package.json 这个包管理配置文件:
推荐阅读
- 深入浅析Nodejs中的net模块
- 聊聊职场上的道德与法律 什么是职业道德
- 十二星座2019年12月5日运势:细心观察,深入思考
- 来来来,管家和你聊聊宝宝音乐敏感期那些事儿
- 深入剖析市场调研方法及步骤 如何做市场调查与分析
- 2020年双子座运势:虽然心累,但处理好深入关系,会得到馈赠
- 今天来聊聊“短文案和长文案的区别”
- 了解Node.js Nestjs框架的模块机制,聊聊实现原理
- 深入认识用户增长产品经理 用户增长产品经理
- 女性为何经期延长 原因需要深入追究