评论 7
服务器位置
评论 3
服务器位置
评论 2
服务器位置
评论 2
服务器位置
Node.js是在服务器上运行的开源,跨平台JavaScript运行时。自2009年发布以来,该平台已变得非常流行,如今在Web开发领域中发挥着非常重要的作用。如果我们将一个项目在GitHub上收集的星数视为受欢迎程度的指标,那么拥有50,000颗星的Node.js是一个非常非常受欢迎的项目。
Node.js平台基于Google的V8 JavaScript引擎构建,该引擎在Google Chrome浏览器中使用。该平台主要用于创建Web服务器,但其范围不限于此。
让我们看一下Node.js的主要功能。
速度
Node.js的主要吸引力之一是速度。在Node.js中执行的JavaScript代码的速度是用C或Java之类的编译语言编写的代码的两倍,并且比诸如Python或Ruby之类的解释语言要快几个数量级。这样做的原因是该平台的非阻塞体系结构,具体结果取决于所使用的基准,但是总的来说,Node.js是一个非常快速的平台。
简单
Node.js平台易于学习和使用。实际上,它非常简单,尤其是与某些其他服务器平台相比时。
的JavaScript
JavaScript在Node.js环境中执行。这意味着数百万已经在浏览器中使用JavaScript的前端开发人员可以用相同的编程语言编写服务器端代码和客户端代码,而无需学习用于迁移到服务器端开发的全新工具。
浏览器和服务器使用相同的语言概念。此外,Node.js可以在平台上实施时快速过渡到新的ECMAScript标准。
无需等待用户为此刷新浏览器,因为Node.js是服务器端环境,完全由开发人员控制。因此,当您安装支持版本的Node.js时,新的语言功能将变得可用。
V8引擎
在其他解决方案中,Node.js的核心是Google的开源V8 JavaScript引擎,该引擎可在Google Chrome和其他浏览器中使用。这意味着Node.js将利用成千上万的工程师的优势,这些工程师极大地提高了JavaScript Chrome运行时的速度,并继续致力于改进V8。
异步性
在传统的编程语言(C,Java,Python,PHP)中,所有指令默认情况下都处于阻塞状态,除非开发人员明确负责异步执行代码。结果,例如,如果在这样的环境中,您发出网络请求以下载某些JSON代码,则发出请求的流的执行将被挂起,直到接收到响应并进行处理。
JavaScript使使用单线程,回调和事件驱动的开发方法编写异步和非阻塞代码变得更加容易。每当我们需要执行繁重的操作时,都会将回调传递给适当的机制,该机制在完成此操作后将立即被调用。因此,无需等待此类操作的结果即可使程序继续运行。
类似的机制起源于浏览器。我们不能等待,例如,AJAX请求完成而无法响应用户操作(例如按钮单击)。为了方便用户使用网页,从网络下载数据和处理按钮单击的所有操作都必须同时实时进行。
如果您曾经创建过一个按钮单击事件处理程序,那么您已经使用了异步编程技术。
异步机制允许单个Node.js服务器同时处理数千个连接,而不会给程序员带来线程管理和并行代码执行任务的负担。这样的事情通常是错误的根源。
Node.js为开发人员提供了非阻塞的基本I / O机制,通常,Node.js框架中使用的库是使用非阻塞的范式编写的。这使得阻止行为成为例外而不是常规。
当Node.js需要执行I / O操作(例如,从网络加载数据,访问数据库或文件系统),而不是阻塞主线程等待此类操作的结果时,Node.js将启动其执行并继续执行其他操作,直到收到此操作的结果。
图书馆
通过与名为npm的Node.js软件包管理器一起工作的便捷,Node.js生态系统正在蓬勃发展。现在,npm注册表中有超过一百万个开源软件包,任何Node.js开发人员都可以自由使用。
在回顾了Node.js平台的一些主要功能之后,让我们在实际中进行尝试。让我们从安装开始。
安装Node.js
Node.js可以通过多种方式安装,稍后我们将介绍。因此,可以找到所有主要平台的官方安装包。
还有另一种非常方便的安装Node.js的方法,即使用操作系统中提供的程序包管理器。例如,macOS软件包管理器是该领域事实上的标准,称为Homebrew。
如果您的系统上有一个,则可以通过在命令行上运行以下命令来安装Node.js:
brew安装节点
可以在此处找到其他操作系统(包括Linux和Windows)的软件包管理器的列表。
流行的Node.js版本管理器是nvm。该工具使您可以方便地在不同版本的Node.js之间切换,借助它的帮助,例如,您可以安装并尝试新版本的Node.js,然后在必要时恢复为旧版本。在需要在旧版本的Node.js上测试一些代码的情况下,Nvm也很有用。
供初学者使用官方的Node.js安装程序。对于macOS用户,建议使用Homebrew安装Node.js。现在您已经安装了Node.js,是时候编写“ Hello World”了。
第一个Node.js应用程序
第一个Node.js应用程序最常见的示例是简单的Web服务器。这是它的代码:
const http = require('http')
const主机名='127.0.0.1'
const端口= 3000
const server = http.createServer((req,res)=> {
res.statusCode = 200
res.setHeader('Content-Type','text / plain')
res.end('Hello World \ n')
})
server.listen(port,hostname,()=> {
console.log(`服务器运行在http:// $ {hostname}:$ {port} /`)
})
要运行此代码,请将其保存在文件server.js中,然后在终端中运行以下命令:
节点server.js
要检查服务器,请打开浏览器并在地址栏中输入http://127.0.0.1:3000,即成功启动后将在控制台中显示的服务器地址。如果一切正常,页面将显示“ Hello World”。
让我们来看这个例子。
首先,请注意代码包含连接HTTP模块的命令。
Node.js平台具有出色的标准模块集,其中包括完善的网络使用机制。
createServer()对象方法http创建一个新的HTTP服务器并返回它。
服务器配置为侦听特定主机上的特定端口。服务器准备好后,将调用相应的回调,通知我们服务器正在运行。
服务器收到请求后,将触发一个事件,该事件提供两个对象。第一个是请求(req,http.IncomingMessage对象),第二个是响应(res,http.ServerResponse对象)。它们是处理HTTP请求的最重要的机制。
第一个向我们提供有关请求的信息。在我们的简单示例中,我们不使用此数据,但是,如果需要,可以使用对象reqyou来访问请求标头和传递给它的数据。
第二个需要形成并发送对请求的响应。
在这种情况下,我们形成对请求的响应如下。首先,我们将属性状态代码设置为200,表示操作成功:
res.statusCode = 200
接下来,我们设置标题Content-Type:
res.setHeader('Content-Type','text / plain')
然后,我们通过将响应的内容作为参数添加到方法end()中来完成响应的准备:
res.end('Hello World \ n')
我们已经提到,围绕Node.js平台已经形成了强大的生态系统。现在让我们讨论一些流行的Node.js框架和帮助工具。
Node.js的框架和帮助工具
Node.js是一个低级平台。为了简化它的开发并使程序员的生活更轻松,已创建了大量的库。随着时间的流逝,其中一些变得非常流行。这是我认为做得很好并且值得探索的一小部分图书馆:
表现:此库为开发人员提供了一个非常简单但功能强大的工具,用于构建Web服务器。 Express成功的关键在于采用极简方法,并专注于基本的服务器端机制,而不试图强加“一站式”服务器体系结构的愿景。
流星:这是一个功能强大的全栈框架,采用同构方法来开发JavaScript应用程序并在客户端和服务器上使用代码。流星曾经是一个独立的工具,其中包含开发人员可能需要的一切。现在,它还与React,Vue和Angular等前端库集成。流星除开发常见的Web应用程序外,还可以用于移动开发。
考阿:此网络框架由Express背后的同一团队构建。它基于Express的多年经验,其开发重点是简单性和紧凑性。该项目的产生是为了解决对Express进行重大更改的问题,该更改与可能导致社区分裂的其他框架机制不兼容。
Next.js:此框架旨在组织React应用程序的服务器端渲染。
微:这是一个非常轻量级的库,用于构建异步HTTP微服务。
Socket.io。它是用于开发实时网络应用程序的库。
实际上,在Node.js生态系统中,您可以找到几乎所有任务的帮助程序库。您可以想象,建立这样的生态系统需要很多时间。 Node.js平台于2009年出现。在其存在期间,发生了很多事情,这些事情对于希望学习该平台的程序员应该是已知的。
Node.js的简要历史
Node.js今年9岁。当然,如果您将此年龄与已经23岁的JavaScript年龄或25岁的网络年龄(如果您从Mosaic的出现算起)进行比较,就没有那么多了浏览器。
9年对于技术来说是很短的时间,但是现在看来Node.js平台一直存在。
使用平台的早期版本中的Node.js时才2年。即使到那时,尽管事实上关于Node.js的信息并不多,但人们可能已经感觉到Node.js非常认真。
现在,让我们讨论一下Node.js背后的技术,并快速浏览一下与该平台有关的主要发展.
因此,JavaScript是一种在Netscape中创建的编程语言,它是一种脚本语言,用于在Netscape Navigator浏览器中处理网页。
Netscape业务的一部分是出售Web服务器,其中包括一个称为Netscape LiveWire的环境。它允许您使用服务器端JavaScript创建动态网页。
使用JS进行服务器端开发的想法比Node.js古老得多。这个想法几乎和JavaScript一样古老,但是在当时,服务器端JS并不流行。
使得Node.js平台如此广泛和流行的关键因素之一是它首次出现时。因此,几年前,JavaScript开始被认为是一种严肃的语言。这要归功于Google Maps或Gmail等Web 2.0应用程序,它们向世界展示了现代Web技术的力量。
由于浏览器的竞争一直持续到今天,JavaScript引擎的性能已显着提高。主要浏览器背后的开发团队每天都在努力改善其解决方案的性能,这总体上对JavaScript产生了有益的影响。
这样的引擎之一就是已经提到的V8,它在Chrome浏览器中使用,并在Node.js中使用。这是浏览器开发人员追求高性能JavaScript代码的结果之一。
当然,Node.js的流行不仅基于幸运的巧合,而且还基于该平台在正确的时间诞生的事实。她向世界介绍了一种创新的服务器端JavaScript开发方法。让我们看一下Node.js历史上的主要里程碑。
2009
Node.js的出现
制作第一个npm变体。
2010
Express的外观。
Socket.io的出现。
2011
Npm 1.0版本。
像LinkedIn和Uber这样的大公司已经开始使用Node.js。
2012
Node.js的迅速普及。
2013
Ghost的出现,Ghost是使用Node.js的第一个主要发布平台。
Koa发布。
2014
今年发生了戏剧性的事件。出现了IO.js项目,它是Node.js的分支,其主要目的是引入ES6支持并加速平台的开发。
2015
Node.js基金会成立。
合并IO.js和Node.js。
在npm中,可以使用私有模块。
产生Node.js 4(应该注意,平台的版本1、2和3并非如此)。
2016
左垫包事件。
纱线的出现。
Node.js 6版本。
2017
Npm开始更加重视安全性。
Node.js 8版本
支持HTTP / 2的出现。
V8被正式认可为JS引擎,不仅为Chrome设计,还为Node设计。
每周有30亿次npm下载。
2018
Node.js 10版本。
支持ES模块。
实验性MJS支持。