JavaScript是世界上最流行的编程语言之一。今天,它为数百万个网站提供支持,并吸引了成群的开发人员和设计人员为Web构建功能。如果您是编程新手,那么 JavaScript很容易成为最适合您的编程语言之一。
在最初的20年里,JavaScript主要用于客户端脚本。由于JavaScript只能在标签内使用,因此开发人员必须在前端和后端组件之间使用多种语言和框架。后来出现了Node.js,它是一个运行时环境,包括执行用JavaScript编写的程序所需的一切。
Node.js是一个单线程、开源、跨平台的运行时环境,用于构建快速且可扩展的服务器端和网络应用程序。它运行在V8 JavaScript运行时引擎上,它使用事件驱动的非阻塞I/O架构,这使其高效且适用于实时应用程序。
Node.js是用什么写的?
Node.js是用C、C++和JavaScript编写的。
维基百科将Node.js定义为“Google的V8 JavaScript引擎、libuv平台抽象层和核心库的打包编译,它本身主要用JavaScript编写。”
运行时内部使用Chrome V8,它是JavaScript执行引擎,它也是用C++编写的。这为Node.js的所有功能添加了额外的用例,例如访问内部系统功能(如网络)。
Node.js使用“单线程事件循环”架构同时处理多个客户端。要了解这与其他运行时有何不同,我们需要了解如何用Java等语言处理多线程并发客户端。
在多线程请求-响应模型中,多个客户端发送一个请求,服务器在返回响应之前处理每个请求。但是,使用多个线程来处理并发调用。这些线程被定义在一个线程池中,每次有请求进来时,都会分配一个单独的线程来处理它。
node.js如何使用事件循环处理传入请求
Node.js的工作方式不同。让我们来看看它经历的每一步:
由于Node.js使用更少的线程,它使用更少的资源/内存,从而更快地执行任务。所以就我们的目的而言,这种单线程架构相当于多线程架构。当需要处理数据密集型任务时,使用Java等多线程语言会更有意义。但对于实时应用程序,Node.js是显而易见的选择。
Node.js在过去几年中发展迅速。这要归功于它提供的大量功能列表:
在过去的2年里,网站有了巨大的增长,正如预期的那样,Node.js也在快速增长。早在2018年,流行的运行时就已经超过了10亿次下载门槛,据W3Techs称,Node.js被全球所有网站的1.2%使用。互联网上的站点总数超过2000万个。
毫不奇怪,它也是数百万公司的热门选择。以下是当今使用Node.js的一些流行的:
Node.js的应用
Node.js用于各种各样的应用程序。让我们探索一些流行的用例,其中Node.js是一个不错的选择:
NO。
Node.js不是一种编程语言。相反,它是一个运行时环境,用于在浏览器之外运行JavaScript。
Node.js也不是一个框架(用于开发软件应用程序的平台)。Node.js运行时构建在一种编程语言(在本例中为JavaScript)之上,并有助于运行框架本身。
综上所述,Node.js既不是编程语言也不是框架;这是他们的环境。
开发人员的一个常见误解是Node.js是一个后端框架,仅用于构建服务器。这不是真的:Node.js可以在前端和后端使用。
Node.js框架成为构建灵活和可扩展后端的开发人员的热门选择的原因之一是它的事件驱动、非阻塞特性。但是,前端开发人员会在他们自己的工作中清楚地看到 Node.js的这些好处。
让我们来看看为什么Node.js同时适用于后端和前端:
决定从哪里开始使用Node.js可能会让人不知所措。幸运的是,它安装起来很简单,然后您就可以自己试驾了。
如果您已经安装了Node.js,请随意跳过本节。
(1)通过 Bash
curl "https://nodejs.org/dist/latest/node-${VERSION:-$(wget -qO- https://nodejs.org/dist/latest/ | sed -nE 's|.*>node-(.*)\.pkg.*|\1|p')}.pkg" > "$HOME/Downloads/node-latest.pkg" && sudo installer -store -pkg "$HOME/Downloads/node-latest.pkg" -target "/"
(2)通过 Homebrew
brew install node
直接从nodejs.org网站下载Windows安装程序。
在Ubuntu 18.04+上,您可以使用以下命令安装 Node。
sudo apt update
sudo apt install nodejs
在上一节中,我们成功安装了Node.js。让我们通过检查安装的版本来验证它。在终端中运行以下命令。
node -v
您也可以通过较长的标志检查它
node --version
您应该会看到与此类似的输出。虽然版本号可能会有所不同。
v14.16.0
NPM是Node.js的包生态系统。它是世界上所有开源库中最大的生态系统,拥有超过100万个软件包并且还在不断增长。NPM是免费使用的,每天都有成千上万的开源开发人员为它做出贡献。
NPM带有一个开箱即用的命令行实用程序。您可以直接前往NPM网站搜索您需要的包,然后使用单个命令进行安装。您还可以通过此命令行实用程序管理包的版本、查看依赖项,甚至在项目中设置自定义脚本。毫无疑问,NPM是Node.js社区最受欢迎的财产;Node.js吸引了大量开发人员,主要是由于其出色的包支持。
安装Node.js时,会自动安装NPM。我们在前面的章节中介绍了如何安装Node.js,所以现在让我们看一下使用NPM安装包的命令:
npm install
是的,就是这么简单!你甚至可以一次安装多个包:
npm install
如果要在全局上下文中安装包,还可以指定-g (global)标志。这使您可以在机器上的任何地方使用该软件包。
当你初始化一个新的应用程序时,NPM会自动创建一个包含所有NPM包的package.json文件。在这里,您可以指定版本、依赖项和自定义脚本。
NPM实用程序附带一长串命令,包括publish
、audit
、run
等。您可以使用命令npm help
检查如何使用这些。
节点和npm版本
以下是当今一些最受欢迎的Node.js包:
和往常一样,让我们从基本的“Hello World”程序开始,我们在Node.js中创建一个服务器,它将在服务器请求中返回“Hello World”输出。在你开始之前,一定要为自己设置一个好的文本编辑器。
打开文本编辑器后,下面是您将用于“Hello World”程序的代码:
// server.js
const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World! Welcome to Node.js');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
将此文件保存为“server.js”。现在前往终端并使用以下命令启动服务器:
node server.js
服务器现在应该开始运行。要验证输出,请在浏览器中打开http://localhost:3000 。你应该会看到消息——
Hello World! Welcome to Node.js
Node.js带有一个名为“HTTP”的内置模块,它允许Node.js通过超文本传输协议 (HTTP)传输数据。
在上面的代码中,我们首先在程序中加载http模块。然后我们使用createServer方法接受请求并返回带有状态码的响应。最后,我们在定义的端口进行监听。
恭喜——你刚刚在Node.js中创建了你的第一个服务器!在下一节中,我们将学习如何使用Express框架来创建服务器。
首先,我们应该讨论什么是服务器。服务器负责通过其软件(最常见的是Apache或Nginx)接收客户端请求,执行所需的一组任务,最后将响应发送回客户端。Express是一个可以帮助我们在Node.js中创建服务器的框架。
Express.js是一个最小且灵活的Node.js Web应用程序框架,它为Web和移动应用程序提供了一组强大的功能。它允许在您的应用程序中添加路由表和设置中间件。您可以使用以下命令安装Express。
npm install express --save
在上一节中,我们使用了内置的http实用程序来创建服务器。现在,让我们使用Express.js创建一个“Hello World”服务器。
打开您的文本编辑器并输入以下代码:
// server-express.js
const express = require('express')
const app = express() // initialize app
const port = 3000
// GET callback function returns a response message
app.get('/', (req, res) => {
res.send('Hello World! Welcome to Node.js')
})
app.listen(port, () => {
console.log(`Server listening at http://localhost:${port}`)
})
接下来,我们将使用以下命令运行我们的服务器。
node server-express.js
现在在浏览器中检查http://localhost:3000以查看“Hello World”输出。
简而言之,Node.js是一种流行的编程环境,可用于构建需要支持多个并发请求的大规模应用程序。单线程非阻塞I/O也使其成为实时和数据流应用程序的绝佳选择。
更重要的是,Node.js拥有庞大的活跃开发者社区,并拥有世界上最大的开源包存储库NPM,目前包含超过一百万个包。
开始使用Node.js很容易。我们已经介绍了如何在Node.js中安装和创建服务器,所以剩下的就是考虑如何在自己的堆栈中使用和实现Node.js。您还可以通过访问nodejs.dev上的官方Node.js文档来扩展您的知识。