朋友们,美好的一天!
我将在Node.js指南上为您提供此翻译。
其他部分:
第1
部分第2
部分第3
部分第4部分
Node.js简介
Node.js是一个开放且跨平台的JavaScript运行时。对于几乎所有项目来说,这都是一个很好的解决方案。
Node.js在浏览器外部运行V8 JavaScript引擎(Google Chrome的核心)。这使Node.js的生产率很高。
Node.js应用程序作为单个进程运行,无需为每个请求创建新线程。 Node.js在标准库中提供了一组异步I / O原语,以保护JavaScript免受阻塞,并且通常使用非阻塞范式编写Node.js中的库,从而使阻塞行为成为例外而不是规则。
当Node.js执行I / O操作(例如从网络读取(数据),访问数据库或文件系统)而不是阻塞流并等待CPU周期完成时,Node.js在收到响应后将继续执行该操作。
这使Node.js可以通过一台服务器同时处理数千个请求,而无需使用可能导致严重错误的流一致性系统。
Node.js的一个显着优势是,数百万开发人员为浏览器编写JavaScript代码时,除了具有客户端代码之外,现在还能够编写服务器端代码,而无需学习完全不同的语言(编程)。
在Node.js中,可以毫无问题地使用新的ECMAScript标准,您不需要等到所有用户都更新他们的浏览器后-您可以通过更改Node.js的版本来确定要使用的ECMAScript版本,还可以通过运行Node.js来添加实验性功能带有(对应)标志。
大量的图书馆
Npm具有简单的结构,为Node.js生态系统的快速发展做出了贡献;如今,npm已注册了超过1,000,000个开放包,您可以免费使用这些包。
示例Node.js应用程序
Node.js最常见的用例是创建一个Web服务器:
const http = require('http')
const hostname = '127.0.0.1'
const port = process.env.PORT
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(`Server running at http://${hostname}:${port}/`)
})
首先,我们包含http模块。
Node.js具有出色的标准库,其中包括一流的网络支持。
该方法
createServer()
http
创建一个新的HTTP服务器并返回它。
服务器设置为侦听特定的端口和主机。服务器就绪后,回调函数将启动,在这种情况下,将通知服务器正在运行。
当一个新的呼叫请求事件请求request时,包含两个对象:请求(对象http.IncomingMessage(传入消息))和响应(对象http.ServerResponse(服务器响应))。
这些对象是处理HTTP调用所必需的。
第一个对象包含请求详细信息。在我们的示例中未使用它,但是您可以访问请求标头及其数据。
第二个对象用于向请求者提供数据。
在这种情况下,
res.statusCode = 200
我们将statusCode属性设置为200,以指示请求成功完成。
我们设置Content-Type标头(内容或内容类型)
res.setHeader('Content-Type', 'text/plain')
并通过添加内容作为参数来关闭响应
end()
:
res.end('Hello World\n')
Node.js框架和工具
Node.js是一个低级平台。为了满足开发人员的需求,已经创建了数千种不同的库。
随着时间的流逝,其中许多已变得非常流行。这是其中一些的列表:
- AdonisJs: - , . Adonis — - Node.js.
- Express: -. , , .
- Fastify: -, . Fastify -.
- hapi: , .
- koa: Express . - , Express.
- Loopback.io: .
- Meteor: -, JavaScript, . - meteor , , React, Vue Angular. .
- Micro: HTTP-.
- NestJS: TypeScript Node.js- , .
- Next.js: React- .
- Nx: NestJS, Express, React, Angular .. Nx , .
- Socket.io: .
Node.js
信不信由你,Node.js诞生只有10年了。
进行比较:JavaScript已经存在了24年,而Web已经存在了30年,
10年对于技术来说是很短的时期,但是有时似乎Node.js一直存在。
自从它诞生仅2年之后,我就知道了。但是即使如此,尽管信息有限,但它似乎仍在等待着美好的未来。
在本节中,我们将看一下Node.js历史的概况。
一点历史
JavaScript是Netscape发明的一种编程语言,是一种脚本工具,用于在Netscape Navigator浏览器中处理网页。
Netscape商业模型的一部分是出售包含Netscape LiveWire的Web服务器,该服务器能够使用服务器端JavaScript创建动态页面。不幸的是,Netscape LiveWire失败了,直到Node.js才使用服务器端JavaScript。
Node.js普及的关键因素之一是它的时机。早在几年前,由于“ Web 2.0”应用程序(例如Flickr,Gmail和其他应用程序)向世界展示了现代Web的外观,因此JavaScript被认为是一种严肃的(编程)语言。
随着浏览器努力提高性能以使用户受益,JavaScript引擎也得到了显着改善。主要的浏览器开发团队一直在努力为JavaScript提供更好的支持并尽快执行。使用Node.js V8的引擎(也称为Chrome V8-Chromium的开放式JavaScript引擎)在这项比赛中脱颖而出。
Node.js在正确的时间和正确的位置出现。幸运的是,这并不是其受欢迎的唯一原因。该项目包含许多开发人员都喜欢的服务器端JavaScript开发的大量创新思想和方法。
2009年
- Node.js出现了
- Npm出现
2010
- 表达
- 套接字
2011年
- npm 1.0版
- Node.js: LinkedIn, Uber .
- hapi
2012
- Node.js
2013
- - Node.js: Ghost
- Koa
2014
- : Node.js io.js ( — git) ES6
2015
- Node.js Foundation
- IO.js Node.js ( — git)
- npm ()
- Node.js 4 ( 1, 2 3 )
2016
2017
- npm
- Node.js 8
- HTTP/2
- V8 Node.js , Node.js JS Chrome
- 3 npm
2018
- Node.js 10
- 对带有.mjs扩展名的ES模块的实验支持
如何安装Node.js?
Node.js可以通过多种方式安装。
主要平台的发行版可在官方网站上找到。
安装Node.js的一种非常方便的方法是使用程序包管理器。每个操作系统都有其自己的。
在macOS上,这是Homebrew,使用命令行可以轻松安装Node.js:
brew install node
Linux,Windows和其他系统的软件包管理器列表在此处。
nvm
是运行Node.js的一种流行方法。它使您可以轻松地在Node.js版本之间切换,安装新版本进行测试以及在出现问题时撤消安装。
在较旧版本的Node.js中测试代码时,它也非常有用。
欲了解更多信息有关
nvm
遵循此链接。
我的建议是,如果您只是刚开始并且以前没有使用过Homebrew,请使用官方安装程序。
安装Node.js之后,您可以
node
在命令行上访问可执行程序。
您应该如何了解JavaScript与Node.js一起使用?
作为一个初学者,很难确定您的编程水平。
也很难确定JavaScript在哪里结束,Node.js在哪里开始,反之亦然。
就个人而言,我建议您在深入研究Node.js之前对以下基本JavaScript概念有一个很好的了解:
- 语法或词法结构
- 表达式(基本上是相同的语法)
- 数据类型)
- 变数
- 功能
- 这个关键词
- 箭头功能
- 周期数
- 可见区域
- 数组
- 模板或字符串文字
- 分号(可能是强制使用的情况,例如,与IIFE一起使用时)
- 严格制度
- ECMAScript 6,2016,2017
掌握这些概念是专业的全栈开发人员之路的开始。
以下概念也是理解异步编程的关键,异步编程是Node.js的基本组成部分:
- 异步编程和回调函数(回调)
- 计时器(计数器)
- 承诺(promises)
- 异步/等待
- 关闭
- 事件循环(调用堆栈)
Node.js和浏览器之间的区别
JavaScript可以在浏览器和Node.js中使用。
但是,构建浏览器应用程序与构建Node.js应用程序非常不同。
尽管在两种情况下都使用JavaScript,但仍有一些关键差异决定了开发的细节。
从JavaScript前端(前端开发人员-应用程序的客户端)的角度来看,在Node.js中开发应用程序具有显着的优势,这体现在以下事实:客户端和服务器上的所有地方都使用相同的编程语言-JavaScript。
这是成为一个完整堆栈的绝好机会:我们都知道全面,深入地学习一种新的编程语言是多么困难,在这种情况下,就没有这种需要。
唯一需要研究的是生态系统。
在浏览器中,大多数时候我们必须处理DOM和其他Web API,例如cookie。当然,它们在Node.js中不存在。 Node.js缺少窗口,文档和其他特定于浏览器的对象。
另一方面,浏览器缺少Node.js通过模块提供的出色API,例如对文件系统的访问。
另一个很大的不同是,在Node.js中,您可以控制代码执行环境。除非您正在开发任何人都可以在任何地方部署的开源应用程序,否则您将知道使用哪个版本的Node.js来运行该应用程序。与浏览器运行时不同,这非常方便,因为用户可以决定使用哪个浏览器。
这意味着您可以编写您的Node.js版本支持的JavaScript代码。
由于JavaScript的发展非常动态,因此浏览器并不总是有时间快速实现该语言的新功能,用户也不一定总是及时更新,因此在Web上,您通常必须维护旧的JavaScript。
要将代码转换为ES5,可以使用Babel;在Node.js中,这不是必需的。
另一个区别是Node.js使用CommonJS模块化系统,而浏览器支持ES模块。
实际上,这意味着在Node.js中我们使用
require()
和在浏览器中import
。
谢谢朋友们的关注。如果您发现错误和错别字,请毫不犹豫地写在PM中,我将不胜感激。
未完待续…