Import npm Modules: Node.js Development
讲座描述
When you install Node.js, you also get npm. npm is a package manager that allows you to install and use third-party npm libraries in your code. This opens up a world of possibilities, as there are npm packages for everything from email sending to file uploading. In this lesson, you’ll learn how to integrate npm into your Node.js app.
通过完整课程学习更多知识
The Complete Node.js Developer Course (3rd Edition)
Learn Node.js by building real-world applications with Node JS, Express, MongoDB, Jest, and more!
35:03:06的随选视频 • 更新于 March 2021
Completely refilmed for 3rd edition
Build, test, and launch Node apps
Create Express web servers and APIs
Store data with Mongoose and MongoDB
Use cutting-edge ES6/ES7 JavaScript
Deploy your Node apps to production
Create real-time web apps with SocketIO
简体中文 [自动]
现在, 您知道了如何使用节点模块系统加载核心节点模块(如文件系统模块)和您创建的其他文件(如Node)。 js的。 在本视频中, 您将学习如何使用模块系统加载NPM软件包。 这将使我们能够从我们的节点应用程序中利用所有这些令人敬畏的NPM模块。 我们可以安装无数令人敬畏的、 有用的NPM软件包, 这样我们就不必从头开始重新创建轮子。 几乎所有的应用程序都需要做一些事情。 例如, 验证电子邮件等数据, 甚至发送电子邮件。 这些都是核心功能, 并不特定于应用程序为用户执行的操作。 因此, 如果我们使用NPM模块来解决常见问题, 这确实是节点社区的标准, 那么我们可以把开发人员的时间花在使我们的应用程序独一无二的出色功能上。 正如我在前面提到的, 当我们安装Node时, 我们也在机器上安装了NPM程序。 这样我们晚上9点就能看到所有的东西。 米。 JST, 我们一会儿再回到它。 现在, 在脚本中实际使用这些模块之前, 我们必须执行两个非常重要的步骤。 第一, 我们必须在项目中初始化NPM, 第二, 我们必须安装所有我们实际想要使用的模块。 让我们来看看这是怎么发生的。 首先, 让我们在项目中初始化NPM, 这意味着我们必须从项目根目录运行一个命令。 这个根目录是notes app文件夹, 所以要确保你在下面的终端中从那里运行命令。 我确实在访问那个目录。 现在就去 当我们第一次安装Node时, 我们通过使用带有V标志的node命令获得了我们正在使用的Node版本。 当我们安装Node时, 我们还可以访问NPM命令行工具。 我们可以使用V标志运行它, 以获得我们正在运行的NPM版本。 在这里, 您可以看到我正在运行版本6。 4. 1. 现在, 只要您使用的是第五版或更高版本, 您使用的NPM的具体版本就不重要了。 所以只要第一个数字是5或更高, 这是应该的, 你就可以去了。 现在, 我们必须从这里初始化项目中的NPM, 我们通过从项目的根目录运行一个命令来完成。 NPM在里面。 这个命令将初始化我们项目中的NPM, 在一天结束时, 它不会做任何花哨的事情。 它只是创建一个配置文件, 我们可以使用它来管理我们要安装的NPM网站中的所有依赖项。 在这里, 我们将继续在其中运行NPM。 现在, 它有很多信息告诉我们到底发生了什么。 最后, 实际上是NPM要求我们提供一些信息来填充各个字段, 现在我们可以在此配置文件中键入自定义答案。 例如, 它需要的第一条信息只是我们包的名称。 给这个项目起个名字。 现在, 默认情况下, 它使用文件夹名称notesapp。 我们可以选择使用它, 只需按回车键, 或者我们可以键入一些自定义的内容来覆盖它询问的每个问题的值。 我们将继续使用默认值。 所以我们有包名。 我就按回车键。 我们有版本, 我们有描述, 入口点, 测试, 命令, git, 仓库, 关键字, 作者和许可。 下面我们将详细介绍其中的几个字段。 我们将在探索测试时讨论测试, 在设置部署时讨论Git存储库。 然而, 这些字段中的许多字段是为创建NPM包的人准备的, 这不是我们正在做的。 我们正在自己创建一个应用程序, 并尝试使用NPM包。 因此, 对于我们这里的目的来说, 其中许多的值并不重要。 我们可以在最后一个上按回车键, 它会询问我们是否一切正常。 现在, 它到底在做什么? 好吧, 它告诉我们它将要向notes应用程序目录写入一个包JSON文件。 下面是这是确切的内容。 它即将写入该文件。 一切都很好。 我们可以键入yes来确认我们希望NPM在其中实际创建该文件。 现在, 我们在项目根目录中有了一个全新的文件。 如果我打开它, 我们可以看到NPM承诺的。 它看起来和我们在下面的终端中输出的完全一样。 这个文件的扩展名是JSON, 它代表JavaScript对象表示法。 如您所见, 它看起来有点像JavaScript对象。 有一对夫妇。 在整个课程中, 我们将使用Jason来探索细微的差异。 这是我们现在要非常详细地介绍的内容。 所有你真正需要知道的是, 你必须使用双引号而不是单引号和你的所有属性名称, 如名称或作者。 它们还需要用引号括起来, 就像我们在这里看到的那样。 如果我从一个属性名(如license)中去掉引号, 这在JavaScript中是有效的, 但在JSON中是无效的。 所以让我们继续把它们带回来。 现在, 这个文件将用于管理我们的应用程序运行所需的所有依赖项。 因此, 在这里, 我们将列出所有我们希望用于启动的NPM包。 让我们转到NPM JS, 找到一个我们真正想要使用的包。 在这个例子中, 我们将安装非常流行的validator包, 它为我们提供了执行数据验证的各种非常棒的工具。 因此, 在NPM搜索栏中, 我将搜索Validator。 我们正在寻找第一个结果, 即验证程序包。 现在, 还有其他的验证包。 甚至还有一个字母是大写的V。 我们需要第一个结果小写验证器。 现在, 当我们单击该按钮时, 将转到NPM软件包页面。 这是一个很棒的页面。 每个NPM包都有一个, 它给了我们大量关于包的信息。 我们有关于如何实际使用它的文档。 在右边, 我们有一堆关于软件包的很棒的统计数据, 比如版本号, GitHub主页和每周下载量。 这是一个非常受欢迎的软件包, 每周下载量超过100万次。 因此, 如果您想在Node应用中执行一些验证, 有两种方法可以实现。 第一种方法是自己编写所有的验证代码。 你必须写代码, 你必须维护它。 您将需要为它编写测试用例, 以确保没有边缘用例。 一般来说, 随着Node的发展, 您必须跟上代码的进度。 这是第一个选择 现在, 当您创建一个应用程序时, 我怀疑验证是否是使它独特的原因。 因此, 如果我正在创建一个减肥应用程序作为一个例子, 我可能有某种原因, 我为什么这样做。 我有一个关于饮食、 锻炼或习惯的模型, 它将帮助人们以一种他们以前无法做到的方式减肥。 我的应用程序的独特之处可能不是它如何验证电子邮件, 所以当然, 你可以写代码, 但它是一个更好的做法, 为许多这些基本功能, 利用一个良好的测试NPM包, 如这一个, 其中数以百万计的不同应用程序和实用程序正在利用它的所有时间。 这并不是说我们不写代码, 我们会写的。 但对于某些事情, 我们将利用其他软件包, 使我们能够以一种更安全的方式完成。 在这个例子中, 验证程序包有各种各样的工具来验证电子邮件, URL, 电话号码, 社会安全号码, 信用卡和其他类型的字符串信息。 让我们继续安装它, 看看它是如何工作的。 现在, 我们要做的是记下软件包名称, 因为这很重要。 你可以在这里看到一个命令, 我们可以在这里运行来安装它。 小写的v validator是我们需要的包名, 我们将前往终端并安装它。 现在, 我们要运行命令。 我们将再次从此处的notes应用程序目录运行。 这是NPM安装验证程序。 现在你会注意到在网站上他们使用了npm i验证器。 它们是一样的。 I只是install的简写。 无论使用哪种方法, 您都非常欢迎。 现在, 我们将从此处指定要安装的特定版本。 在版本号上, 我将使用当前可用的最新版本, 即10。 8. 0. 在本课程中, 我将始终指定软件包或版本, 以确保我们始终在同一页上。 NPM模块确实会随着时间的推移而改变它们的API, 所以为了确保视频始终工作, 我将把我们锁定在特定的包中, 包括在API改变时进行更新。 在这里, 这就是我们要运行的命令。 现在, 当我们运行这个程序时, 它会做什么? 好吧, 它会传到国家预防管理系统的服务器上。 它将获取该包的所有代码, 并将其添加到我们的应用程序中。 我们会注意到, 当我们运行这个命令时, 发生了两件事。 第一, 我们得到了一个包连字符锁定的JSON文件, 第二, 我们得到了一个新的目录, 一个节点模块目录。 让我们快速了解一下这两种情况。 首先是节点模块。 这是一个包含我们安装的依赖项的所有代码的文件夹。 如果我把它打开, 我们会得到什么? 我们只有一个目录验证器。 这是我们安装的软件包。 如果我们打开它, 它是验证程序包的所有代码。 现在, 我们不应该手动编辑节点模块目录。 我们不应该进入验证程序并实际更改这些文件, 我们将在学习本课程的过程中详细讨论这一点, 并了解有关包管理的更多信息。 在使用节点模块时, 只需在运行NPM安装命令时生成和编辑节点模块即可。 因此, 我们使用NPM安装, NPM维护此目录。 包连字符锁JSON也是如此。 这是一个包含额外信息的文件, 使NPM更快, 更安全。 它列出了我们所有依赖项的确切版本以及它们是从哪里获取的。 我们还有一个字符散列, 确保我们得到的代码和之前得到的完全一样如果我们要再次安装依赖项, 再一次, 这不是我们应该编辑的文件. 同样, 这将由国家预防机制维持。 所以我们安装了软件包, 当我们运行该命令时。 它甚至被添加到JSON包中。 我们有一个dependencies属性, 我们有我们的依赖项名称沿着我们安装的版本。 现在我们已经安装了它, 我们可以移动到我们的节点应用程序, 一个文件, 如app JS, 实际上是用require加载的, 并利用它提供的一些功能加载到我们再次使用require的NPM包中。 我将在此文件中添加第二个必需的语句。 我们将继续使用require, 就像我们之前做的那样, 我们确实要传入一个字符串。 现在, 对于那些核心节点模块, 我们键入文件的模块名称。 我们将以正斜杠开始, 以提供NPM模块文件的相对路径。 我们列出了NPM包的名称。 在本例中, 这就是验证器。 这类似于我们对那些核心节点模块所做的, 现在需要返回验证程序包提供给我们的所有东西。 在这里我可以创建一个变量, 比如validator, 用来存储require返回的内容. 现在, 当你要弄清楚如何使用一个给定的包时, 你只需要查阅文档来弄清楚它的使用意图。 最后, 我们将查看所安装的每个工具的文档。 我想向您介绍文档, 因为它将为给予提供更多有关某个工具如何工作或探索给定工具的其他使用方式所需的所有信息。 现在, 为了我们的目的, 在NPM软件包页面上, 我们提供了使用此工具的所有不同方式。 如果我们向下滚动到validators部分, 我们会看到一个方法, 以及它如何工作的描述。 对于我们能做的各种不同的事情, 可能有100种不同的方法。 方法之一是电子邮件。 这使我们能够确定给定的电子邮件是否有效, 这是我们确实要利用的。 这个方法可以直接在验证程式上存取, 验证程式是一个物件。 让我们来测试一下。 我将添加一个控制台。 下面的log调用, 这样我们就可以将一些输出打印到终端, 而不是创建一个变量, 然后将其传递到控制台。 log, 我将直接在控制台内部调用该函数。 在这里验证器点了方法名, 即email, 我们将向该方法调用传递一个字符串参数. 现在, 让我们继续尝试类似示例, com上的Andrew这样的内容, 它确实应该是一个有效的电子邮件, 因为它包含了所有的组件。 现在, 让我们从下面的终端运行应用程序。 我将使用clear命令或windows上的CLS清除输出。 然后我将运行节点与Apks。 当我这样做的时候, 我得到了什么? 我从第五行得到第一条信息, 然后我得到真, 这是来自第七行。 这是一个有效的电子邮件。 现在我们换个姿势。 我将删除Andrew和应用程序符号, 只留下example. com, 我将再次保存应用程序JS, 我将重新运行我们的脚本, 这次我们正确地得到false。 传入的信息不再是有效的电子邮件。 因此, 当email返回true时, 如果字符串是email, 则返回false。 如果字串不是。 好了 我们能够安装一个NPM包, 将其加载到我们的节点应用程序中, 并利用它来做一些有意义的事情。 在我们结束这篇文章之前, 让我们继续探讨另一种方法。 我们有一个按字母顺序排列的方法列表, 我将向下滚动到IS, 我们正在寻找您的URL。 我们还有另一种方法可以确定给定的字符串是否是URL。 让我们来测试一下。 我将删除电子邮件, 这是我们稍后在课堂上会用到的。 我将用is URL替换它, 然后更改我提供的字符串值。 让我们继续, 并尝试我自己的网站网址https冒号正斜杠正斜杠midi i。 我要去保存。 我要重新运行程序, 这次我们实现了。 现在我要搞砸了。 也许我会做一些像删除一个冒号和正斜杠。 我会再运行一次脚本。 我能得到什么? 我得到假的。 这确实是一个无效的URL。 现在, 当涉及到利用给定包的文档时, 通常最好找到一个示例。 有时候文档本身并没有真正说明如何在顶部使用一些东西, 但是, 我们可以看到有一些真实的例子, 类似于我们刚刚在自己的项目中所做的。 现在你会注意到这里有两个版本。 无S6和S6。 这是一个使用的节点课程。 六是七和更多的现代功能贯穿始终。 这里唯一的大区别是上面我们使用require, 这是我们在Node中使用的, 下面使用一个稍微不同的语法, 使用input关键字, node当前不支持导入。 关键字支持是未来为它稍后下来的路线, 当它是支持我将添加一节涵盖它。 但是现在在节点JS中, 当我们想要加载重用中需要的东西时。 这里, 这是一个很好的例子, 可以帮助我们准确地了解该软件包的使用方式。 这就是我们要停止的地方。 我们已经安装了一个软件包, 并要求将其添加到我们的文件中, 而且我们已经在下一个视频中使用了它。 作为一个挑战, 你最终会为一个不同的库做同样的事情。 我很高兴能看到这一点。 所以让我们直接跳到下一个。