Node.js简介—创建您的第一个Web应用程序
立即通过http://jauyeung.net/subscribe/订阅我的电子邮件列表
在Twitter上关注我,网址为https://twitter.com/AuMayeung
https://medium.com/@hohanga上的更多文章
更多文章,请访问http://thewebdev.info/
Node.js是一个运行时平台,用于在JavaScript中运行服务器端应用程序。它采用了V8浏览器引擎来解释服务器上的JavaScript代码。它在其标准库中带有自己的内置模块集,用于运行服务器端应用程序,并允许直接与硬件进行交互。
它可以让我们处理文件并在计算机上执行许多操作。它与浏览器中的JavaScript不同,因为它的功能完全不同。 Node.js可以做的一件事情就是运行一个Web服务器来提供静态和动态内容。
在本文中,我们将通过安装Node.js运行时平台并使用它构建简单的Web应用程序来熟悉Node.js。我们首先下载Node.js运行时。
要在Windows上执行此操作,请转到https://nodejs.org/en/,然后单击LTS链接以下载Node.js运行时,然后双击下载的可执行文件并按照说明进行操作。在Linux中,我们可以使用包管理器下载Node.js。
每个发行版都有不同的下载Node.js运行时的方式。例如,在Ubuntu中,我们运行以下命令来下载Node.js:
$sudo apt-get install curl
$curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
$sudo apt-get install nodejs
当我们运行上述命令时,我们将下载并安装Node.js LTS版本。然后,我们可以运行:
$node -v
查看已安装的Node.js版本。
安装Node.js运行时之后,我们必须学习如何使用终端。
在Windows上,我们将使用按照上述说明安装Node.js时安装的Node.js命令提示符。特殊命令提示符已经为我们设置了Node.js环境,而常规命令提示符则没有。
因此,我们需要Node.js命令提示符来运行Node.js应用程序。 Windows 10还具有适用于Linux的Windows子系统,它为我们提供了不同风格的Linux作为命令提示符程序,使我们可以执行Windows上Linux上可以完成的许多工作。
要安装它,我们必须转到开始菜单,然后搜索“打开和关闭Windows功能”,然后选择“ Linux的Windows子系统”并单击“确定”。之后,重新启动计算机。
然后,重新启动后,转到Windows App Store,然后搜索所需的Linux版本。最常见的是Ubuntu,因此我们可以搜索并单击Install。
之后,打开已安装的Ubuntu命令提示符程序并使其运行,然后它将提示您通过设置用于登录命令提示符的用户名和密码来创建帐户。
使用适用于Linux的Windows子系统,磁盘存储与Windows共享,因此我们不必担心文件移动。
但是,用于Windows的Windows子系统版本1的磁盘操作速度很慢。版本2更快,并且将随Windows 10的最新更新一起发布。
对于macOS和Linux用户,它们具有终端程序,可让我们在命令提示符下运行命令。不需要特殊的命令提示符程序即可运行Node.js应用。它们都可以运行POSIX兼容程序。
所有用户的替代方法是使用虚拟机在您选择的操作系统上运行Node.js。
一种流行的选择是使用VirtualBox,它支持许多常见的操作系统,例如Windows和多种Linux。它是免费的,并且得到了大型社区的支持。
在VirtualBox虚拟机上安装新的操作系统很容易,并且可以下载预制的虚拟机。例如,https://www.osboxes.org/具有许多为VirtualBox制作的Linux虚拟机。
虚拟机使用其自己的存储并与主机共享内存,因此虚拟机将占用您在设置虚拟机时预留的大量内存。
如果您不喜欢虚拟机如何与自己的键盘进行交互,则可以通过使用PuTTY等终端程序连接到虚拟机来改善体验。
但是,您必须先启用虚拟机,然后再执行此操作。例如,要启用从PuTTY登录到您的VirtualBox虚拟机,我们必须执行以下步骤:
- 跑
sudo apt install ssh
安装SSH程序。 - 关闭虚拟机。
- 在VirtualBox中,转到“设置”菜单的“网络”部分。在适配器1上,选择仅主机适配器,然后单击确定。
- 启动您的VirtualBox虚拟机,登录并运行
ifconfig
获取您的虚拟机的IP地址。 - 然后,您可以使用它登录到您选择的终端程序,例如PuTTY。
在虚拟机或计算机上设置Node.js之后,我们可以开始编写Node.js程序。首先,我们必须使用文本编辑器来编写程序,因为我们需要一个仅保存纯文本(即代码)的程序。
例如,在Windows中,Visual Studio Code是编写JavaScript代码的绝佳选择。它具有自动补全功能,用于您尝试键入代码以引用它们的代码和模块。
而且,它既快速又轻巧。它仅占用250MB磁盘空间,并需要1GB内存和1.6 GHz处理器。
这些要求与功能丰富的其他文本编辑器相当。它还具有缩放设置,可以分割单个文件的视图,可以识别不同类型的文件,以便可以正确突出显示它们以便于阅读,并且它具有许多附加组件来扩展其功能。
它还与命令提示符或计算机操作系统的外壳程序集成在一起,因此您可以直接在其中运行命令。
JavaScript支持是内置的,因此我们获得了语法高亮显示,自动完成功能以及针对JavaScript代码自动捕获语法错误的功能。这有助于提高JavaScript编程效率,因为它有助于更快地读取和编写代码。它还使用JavaScript构建。
为了制作有用的程序,我们无法使用自己编写的所有内容,因此必须使用其他库来帮助我们实现这一目标。 Node.js有一个标准库,使我们可以进行很多事情,例如运行Web服务器和操作存储在计算机上的文件。
要执行标准库中未包含的内容,我们可以安装Node.js包并在您的应用代码中导入或要求它们。股票储在软件包存储库中,并且可以由软件包管理器下载。
对于Node.js生态系统,最受欢迎的软件包存储库是Node Package Manager或npm。 Npm是Node.js软件包的存储库,我们可以使用 npm
程序。
npm程序具有许多命令,可让我们轻松下载Node.js软件包。您安装的软件包的详细信息存储在 package.json
在您所在的项目文件夹中。
package.json
也可以将脚本命令存储在 scripts
的部分 package.json
。
此外,为防止软件包版本更改并引起问题, package-lock.json
将创建,指示安装软件包时安装的版本。如果使用版本控制,则将签入两个文件,以便在再次设置应用程序时安装正确的软件包。
Npm有许多命令可以对Node软件包进行处理。最常见的是以下内容。
npm安装
npm install
, 要么 npm i
简而言之,用于安装软件包。
如果您没有在后面加上点评名称 install
,它会下载列出的所有软件包 package.json
如果尚未安装依赖项或安装的版本已过时。
如果您在后面加上点评名称 npm install
,只要找到该软件包,它将使用该名称安装该软件包。在安装过程中, npm
会跑 npm run link
和 npm run build
编译软件包。
您可以通过运行全局安装软件包 npm install -g packageName
。
npm prune
npm prune
删除未使用的软件包。 npm run --production
用于从中删除软件包 devDependencies
部分。的 --dry-run
选项用于检查在实际运行之前将删除哪些软件包。
的 --json
选项可用于以JSON显示结果。启用程序包锁定后,修剪将自动进行。
npm run
npm run-script
使您可以运行自己编写的自定义脚本。 npm run
是此命令的别名。
npm start
npm start
通过运行您定义的命令来启动程序包。
npm update
npm update
更新项目中的软件包。 npm update packageName
仅更新名称为 packageName
。它将最新版本记录到 package-lock.json
。
要安装npm或将npm升级到最新版本,请运行 npm install -g npm
。
创建一个Web服务器
现在,我们拥有编写基本Web服务器所需的一切。它通过侦听给定的端口来完成“ Hello World”响应。我们可以通过使用给定端口进入本地主机来查看消息。
Web服务器的作用是,在给定您放入浏览器或HTTP客户端的URL时,它将获取您发出的请求,包括URL,标头,Cookie和请求正文,然后服务器将根据接受请求。
Web服务器将获取诸如URL,请求方法(GET,POST,PATCH,PUT,DELETE),标头,Cookie和请求正文之类的请求数据,并根据请求中的数据做出响应。
例如,如果我们转到http:// localhost:9999 / helloworld,则侦听端口9999的Web服务器将获取请求URL,如果URL为 helloworld
,在这种情况下,它将返回纯文本响应“ Hello world”。
响应可以具有其自己的标头,例如文件类型和主体数据。它可以采用不同的格式,例如纯文本或JSON,即纯文本,其格式类似于JavaScript文字。
另外,响应将具有响应代码。响应代码的范围是100到500。常见的响应代码包括200(用于一般成功响应),201(用于创建新数据)和204(用于不响应内容)。
300系列响应用于重定向响应。 301代表永久移动。 302表示找到资源。 400系列错误是针对客户端的错误。
例如,400是通用错误请求响应,用于将错误数据提交到服务器的时间。 401用于用户无法使用正确的凭据登录时的未授权响应。
通常,当尝试访问用户不允许访问的资源时,返回403。 404是资源未找到响应。
405用于使用未经授权的HTTP方法发出请求。 422是另一个因发送错误数据而返回的响应,服务器无法对其进行处理。
500系列错误是服务器端错误。 500是针对一般服务器错误。 502用于错误的网关,503指示服务不可用,504表示网关超时。
现在,我们可以使用Node.js编写Web服务器。
我们将以两种方式做到这一点。我们将使用 http
内置于Node.js中的模块和非常流行的Express网络框架,用于构建我们的网络服务器应用。
一个用 http
模块如下所示:
const http = require("http");
http
.createServer((request, response) => {
response.writeHead(200, { "Content-Type": "text/plain" });
response.write("Hello, World!");
response.end();
})
.listen(8888);
console.log("Server listening on port 8888");
在上面的代码中,我们首先导入 http
与模块 const http = require(“http”);
线。然后,我们使用了 createServer
函数来创建HTTP服务器。
然后,我们传入一个回调函数,该函数需要一个 request
和 response
参数。给定服务器已接受的请求,这对于处理数据非常方便。对于这个简单的“ Hello World”示例,我们只返回响应。
我们用 writeHead
功能,在 response
对象并设置响应代码(成功响应为200),然后 Content-Type
响应标头,设置为 text/plain
因为我们要返回纯文本。
然后,我们运行 response.write
与 “Hello, World!”
字符串以在您选择的HTTP客户端的浏览器中显示“ Hello world”。呼唤 response.end()
会将响应返回到HTTP客户端的浏览器。
我们可以通过将上面的代码保存在一个名为的文件中来运行该应用程序 app.js
在您选择的目录中然后运行 node app.js
进入保存文件的目录后。
上面的代码适用于非常简单的应用程序,例如Hello World应用程序。但是,当应用具有更多功能时,请使用 http
模块会很痛苦。
我们将必须在侦听器中检查请求和响应,然后检查希望用户访问的URL,然后根据传递给的内容处理响应并返回它。 request
宾语。
这将使创建复杂的应用程序变得困难,因为您要检查的URL中有很多URL,请求中的标头和正文的变化形式不同。
因此,我们可以使用框架来简化此过程。 Express框架非常简单易用,让我们简化了Hello World应用程序。
要使用Express构建我们的应用,我们可以创建一个文件夹,然后进入该文件夹并运行 npm init -y
。
这将创建一个空的 package.json
文件,将该文件夹指定为Node.js项目文件夹。跑 npm i express
安装Express框架。创建 app.js
在同一文件夹中并添加:
const express = require("express");
const app = express();
const port = 9999;
app.get("/", (req, res) => {
res.send("Hello, World!");
});
app.listen(port, function() {
console.log(`Server listening on port ${port}`);
});
我们可以通过运行 node app.js
在您创建的文件夹中,然后转到http:// localhost:9999,在该文件夹中,您会看到与上面相同的内容。
当您访问http:// localhost:9999时,它仅显示“ Hello World”。其他网址(例如http:// localhost:9999 / abc)将无法正常运行,因为我们仅指定了根网址,用 “/”
,将返回“ Hello World”。
这是我们使用网络服务器所没有的一件事 http
模块。
Node.js是一个具有出色生态系统的运行时平台。它采用了V8浏览器引擎来解释服务器上的JavaScript代码。
它在其标准库中带有自己的内置模块集,用于运行服务器端应用程序,并允许直接与硬件进行交互。
它使我们可以在计算机上处理文件并执行许多操作。它与浏览器中的JavaScript不同,因为它的功能完全不同。
创建一个简单的Web服务器可以简单地通过 http
模块内置到Node.js的标准库中,或者我们可以使用Express框架获得更多高级功能。