2021年Node.js开发人员学习路线图

2023-05-26 0 1,000

2021年Node.js开发人员学习路线图

翻译者 | Mohit

翻译者 | 盖磊

策画 | 田星毛

Node.js 自正式发布年来,已正式成为业内关键破题者众所周知。Uber、Medium、PayPal 和星巴克等小型民营企业,争相将控制技术栈转为 Node.js。Node.js 全力支持合作开发使用方便的应用领域,比如动态跟踪 App、音频 / 文档闲聊发动机、SNS新闻媒体 App 等,现阶段已正式成为合作开发者热衷于的几项专业技能。责任编辑翻译者如前所述另一方面实行历经,得出两张 Node.js 自学蓝图。提议合作开发者考量深入细致掌控 Node.js 以后,要明晰他们构筑的最终目标,不然难Monpazier。最终目标取向有利于在自学中著眼关键性专业技能,而非苦恼于与否值得称赞去自学。

必不可少专业技能JavaScript

对一位前端合作开发人员,在考量掌控后端专业技能时,无须耗费大批的心力自学去 JavaScript。而对全然阿宝,假如想在尽量短的天数内掌控 Node.js,在深入细致前要深刻领会如下表所示基本概念:

斜线函数(Arrow Functions)

类别(Types)

函数(Expressions)

函数(Functions)

句法(Lexical Structures)

this

循环式(Loops)和返回值(Scope)

字符串第一类(Arrays)

字面量模板(Template Literals)

严格模式(Strict Mode)

ES6/ES7

此外,Node.js 中涉及大批的异步编程处理,推荐掌控如下表所示基本概念:

定时器(Timers)

Promises

闭包(Closures)

事件循环式(Event Loop)

异步编程(Async programming)和回调(callbacks)

npm 软件包管理

Node 软件包管理(Node Package Manager,npm)提供现阶段规模最大的注册软件库,其中提供 80 多万种软件包。正确使用 npm,可极大地降低软件包管理的复杂度,非常便于解决应用领域合作开发中的依赖问题。

npm 提供三个组成模块:

命令行接口(Command Line Interface,CLI):CLI 是大部分合作开发者的首选方式,提供本机终端环境运行。

注册软件库(Registry):提供大规模开放式 JavaScript 软件和元信息数据库。

Web 站点:可查找新的软件包,并提供其它一些 npm 功能。

npm 还可管理各版本的代码及依赖。假如使用 npx,无须下载软件包即可运行软件包。

Node.js 基础知识

事件发射器(Event Emitter)

:做为 Node.js 中的第一类,Event Emitter 在操作执行完成后发送消息,触发特定的事件。合作开发者也可编写代码,监听 Event Emitter 发出的事件。比如,一旦完成特定的前端操作,诸如鼠标点击、按键和鼠标移动等交互操作,需在后端做进一步处理。这时后端的 Node.js 环境使用 EventEmitter 类,构筑相应的事件处理模块,用于处理操作事件。

回调(Callback):回调是特定任务执行完成后调用的函数,不影响其它代码的同时执行,避免了异步处理产生阻塞。鉴于 Node.js 中需处理大批的异步任务,因此回调无处不在。回调是实现应用领域无缝快速执行的关键,其运作机制如下表所示图所示:

2021年Node.js开发人员学习路线图

Buffer 类:设计用于处理原始二进制数据的 Node.js 类,操作 V8 发动机外分配的内存。Buffer 类实现为大小不可调整的整数字符串,并提供一整套二进制数据操作方法。比如,对表示范围在 0 到 255 之间字节值的内存中整数,使用 console.log() 输出该 Buffer 实例,会得出一系列十六进制值。

模块系统(Module System):使用 Node.js 生态系统提供的模块,可实现一些复杂功能。模块是可复用的 JavaScript 代码,实现特定的功能。

合作开发专业技能

版本管理系统

:掌控 git、GitHub 等的使用。合作开发中,应尽量避免交叉修改代码导致的更改不可逆。因此,在小型项目中需使用版本控制系统管理。要熟悉版本控制系统的使用,合作开发者应该具备扎实的基础知识。

HTTP/HTTPS 协议:一位优秀的 Node.js 合作开发者,应具备传输协议数据传输的基础知识,因为每位后端合作开发者都需要深入细致理解 HTTP/HTTPS 的工作机制。HTTPS 使用称为 TLS(Transport Layer Security)的加密协议加密通信。后端环境中有大批要自学的知识点,这对 Web 阿宝是颇具难度的。简而言之,基本的 Web 通信主要包括六种请求方法:

POST: 创建新资源;

PUT: 更新资源;

PATCH: 局部修改资源;

DELETE: 删除 URL 指定的资源

OPTIONS: 请求指定 URL/ 服务器所全力支持的通信。

合作开发专业技能

注意:责任编辑仅列出了部分推荐 Web 框架。使用 Node.js 构筑个人项目时,为降低学习难度,推荐从中选定一种框架,不然自学难度很高。

Express.js:提供构筑应用领域所需的最小化接口和工具,非常灵活易用,大批 npm 模块可直接插入 Expresss 使用。

Meteor.js:一种构建 JavaScript 应用领域的万事通框架,提供内建的 MongoDB,全力支持 GraphQL。运行 meteor create myapp,即可生成一个具有 MongoDB 后端的 HTML/JavaScript 页面。使用 Meteor.js 可有效助降低项目合作开发天数,并简化项目的维护。当然假如只是构筑一个简单的 Web 应用领域,还是推荐使用 Express。

Sails.js:一种全力支持快速构筑 REST API、单页应用领域(SPA)和动态 APP 的 MVC 框架。假如合作开发者考量实操一些关键专业技能,比如使用 WebSockets 全力支持动态操作,使用按约定编程(convention over configuration)方法等,推荐自学 Sails.js。

Koa.js:假如合作开发者考量构筑一个经得起天数考验、易于维护的鲁棒应用领域,Koa.js 无疑是很好的选择。Koa 应用领域实现为包含一组中间件函数字符串的第一类,其中函数以堆栈方式执行。

Nest.js:该框架继承了 Angular 的理念,使用 TypeScript 构筑,并且在底层使用了 Express.js,因此兼容大多数 Express 中间件。Nest 提供很好的模块化结构,代码组织在不同模块中,进而构筑高效、良好扩展的应用领域。

数据库管理

自学 Node.js 需要掌控大批的后端专业技能。对一位阿宝,开始可选择 MySQL 等数据库。只有厘清后端系统设计的基础知识,才能根据项目的需求,考量在 MySQL 等基本 SQL 数据库之外选取后端。

注意:关系数据库依然是主流。比如,在建模产品、类比、标签等时依然主要使用关系表结构。类似于电子表格,关系表由行和列组成。

关系数据库管理系统

SQL Server:微软的关系数据库产品,全力支持标准 ANSI SQL,也提供产品独有的 SQL 实现。

MySQL:一款优秀的关系数据库管理系统,时由 Oracle 提供的开源后端软件,具备按需改进代码的灵活性。MySQL 可很好地替代 Oracle、Microsoft SQL server 等商业数据库产品。

PostgreSQL:具有大规模合作开发团队全力支持的开源产品,可运行在 Linux、UNIX 和 Windows 等大多数主流操作系统上。PostgreSQL 全力支持绝大多数标准 SQL 查询,还提供复杂 SQL 查询、外键、触发器、事务、MVCC、流复制等特性。

MariaDB:MySQL 的改进版,额外内建了多种特性、安全和性能改进。简而言之,MariaDB 性能优于 MySQL,推荐在小型应用领域中使用 MariaDB。比如,MariaDB 的小型连接池全力支持超过 20 万的并发连接,显著优于 MySQL。

云数据库服务

Azure CosmosDB

:一种全球分布式数据库服务,全力支持远程管理数据。对小型应用领域,云数据库在扩展型和可管理性上具有优势。Microsoft Azure 全然简化了可扩展和分布能力,在同一后端上全力支持多种数据模型,即可同时用于文档、键值、关系和图模型。该服务不依赖于任何模式,因此可称为 NoSQL 数据库,但可使用全力支持 ACID 交易的查询语言。

Amazon DynamoDB:非常适用于具有 SQL 经验的用户,提供全托管 NoSQL 数据库服务,具有高性能,可预测,扩展性很好。DynamoDB 全力支持创建关系表,可存储并检索任何规模的数据,提供任何服务等级的请求。

NoSQL 数据库

MongoDB

:面向文档的 NoSQL 数据库,适用于大规模数据存储。类似于表是关系数据库的基础,MongoDB 使用集合(Collection)和文档(Document)。其中,文档包含了键值对,是 MongoDB 的基本数据单元。集合包含一系列文档和函数,对标关系数据库中的表。

Redis:可用于数据库、缓存和消息代理(Message Broker)。Redis 使用字符串、哈希、列表、集合、位图、hyperloglog 和时空索引等数据结构,以键值形式存储数据。下面举例说明:

假设应用领域要处理授权用户的不同操作。每次验证用户身份,都要列表给用户,另一种解决方案是将用户授权以某种形式的数据库存储。授权以键值对(也称为令牌)形式提供,用户要提供键值进行验证。

Apache Cassandra:Facebook 创建的高度可扩展、高性能的分布式数据库,设计针对物理上分布的海量数据,实现无单点故障的存储。不同于其它关系数据库系统,Cassandra 在分布式设计上参考了 Amazon DynamoDB,数据模型使用 Google BigTable。

LiteDB:一款超轻量级、高性能的 .NET NoSQL 嵌入数据库,实现无服务器的文档存储。LiteDB 使用于小型的桌面应用领域、Web 应用领域,可根据每个用户的每个账户建立一个独立数据库。

搜索发动机

注意:为什么需要了解搜索发动机控制技术,下面举例说明。假如使用谷歌搜索发动机,它本身就是一个完整的 Web 应用领域。对 Solr 和 ElasticSearch 等后端框架,它们会对所有类别数据集创建索引,进而在服务器提供搜索功能。Solr 全力支持百万级用户的搜索发动机网站。

ElasticSearch:一种如前所述 Apache Lucene 使用 Java 合作开发的搜索和分析发动机,实现海量数据的动态存储和分析。其高性能来自于对索引而非文档的搜索,核心如前所述结构化文档,而非关系表和模式,提供丰富的 REST API 存储和搜索数据。ElasticSearch 可认为是一台处理 JSON 请求并返回 JSON 数据的服务器。

Solr:提供包括字段搜索、布尔查询、短语查询、模糊查询、语法检查、自动填全等高级动态搜索功能。

缓    存

注意:缓存使用内存中存储文件拷贝,降低网络调用,提供更快的网络响应。

内存缓存

该控制技术大多数情况下使用服务器的内存,因此通常称为内存缓存。服务器的一部分内存用作缓存,存储降低应用领域网络调用所需的所有数据。Node.js 提供的节点缓存(node-cache)和内存缓存(memory-cache)软件库,很好地处理了 Node 服务器上的内存缓存。

分布式缓存

分布式缓存将多个网络内存整合为单一的内存数据存储,进而用于缓存最终数据,提供对数据的快速访问。该控制技术尤其适用于大规模数据和大批网络调用的情况,通过在群集中添加更多的服务器实现缓存容量的增量扩展和扩容。Redis 是目前最广为使用的 分布式内存,推荐进一步了解 Memcached。

2021年Node.js开发人员学习路线图

模板发动机

模板发动机全力支持在应用领域合作开发中使用静态模板文件,并在运行时替换模板文件中的变量为实际值,生成发送给客户的 HTML 文件。下面列出了一些广为使用的模板发动机。

Mustache.js

Handlebars

EJS

动态通信

Socket.io:对起步接触后端合作开发的自学者,了解 Socket.io 的动态通信需要补充很多知识,主要底层逻辑在客户端和服务器之间。Socket.io 全力支持客户和服务器间的双向数据流,可视为实现两个终端间动态通信的同步数据流行为。这需要客户在浏览器全力支持 Socket.IO,并且服务器端继承了 Socket.IO 软件包,进而数据才能以 JSON 请求的形式发送。

API 客户端REST

在 REST 提出以后,API 使用远程过程调用(RPC)合作开发,类似于本地执行的代码。期间许多控制技术使用了类似于 RPC 的控制技术栈,并未从根本上解决问题,直到 REST 提出以更好的方式构筑如前所述 Web 的 API。

REST 架构使用基本 HTTP 调用进行通信,避免了使用 COBRA、COM +,RPC 等复杂方式通信。在 REST 中,调用是如前所述消息的,依赖 HTTP 标准描述消息。在 Node.js 生态中,推荐使用 node-rest-client 和 Axios。这两个软件库为快速 Web 应用领域提供了很好的全力支持。

GraphQL

GraphQL 可很好地替代 REST。它使用 API 优先为客户准确提供所请求的数据,是一种灵活并且对合作开发者友好的替代方案,可使用 GraphiQL IDE 部署。GraphQL 具有多项优点,包括在不影响现有查询情况下添加和禁用数据域,以及全力支持多种方式构筑 API。

测    试单元测试框架

单元测试实现各单元和组件的隔离测试。其中,单元可以是应用领域中的最小可测试代码部分。下面列出 Node.js 的最好的单元测试框架:

Jest:一款由 Facebook 提供的测试框架,因其简洁性而广为使用。Jest 相比其它所有测试框架而言具有最好的文档,全力支持并行测试,这意味可使用单独进程独立运行各个测试,实现性能最大化。

Mocha:为 Node 应用领域提供原始标准的单元测试框架,全力支持回调等异步操作,全力支持使用高度可扩展和自定义断言的 Promise。

Chai:全力支持与 Mocha 一同使用,可做为 Node.js 的 TDD/BDD 断言库,可匹配任何如前所述 JavaScript 的测试框架。

模拟测试(Mocking)

单元测试的规模越小越好,并尽量轻量级执行。但在一些情况下,测试第一类存在对其他第一类的依赖。

比如,对需要与域服务器或 Web Service 通信的第一类,无法执行快速、轻量级的测试,这时就需要 Mocking 测试。运行 Mocking 测试不需要任何实际数据库,或是任何类别的连接,只返回得出预期结果的第一类。Mocking 测试只使用一些基本第一类,模拟得出实际测试结果,因此可摆脱所有局限更快地运行测试。

推荐阅读: 下面资料分别介绍了如何使用 Sinon 和 Jasmine 实现 Mocking 测试:

Sinon

https://stackabuse.com/using-mocks-for-testing-in-javascript-with-sinon-js/

Jasmine

https://eclipsesource.com/blogs/2014/03/27/mocks-in-jasmine-tests/

Node.js 软件库推荐:

Async.js

PM2

Commander.js

Nodemailer

延伸阅读

https://js.plainenglish.io/node-js-developer-roadmap-for-2021-2ae9c057bff4今日好文推荐大手笔!中芯国际狂砸78亿买光刻机腾讯前员工因违反竞业协议赔偿近百万;中国居民人均资产36万元;拼多多日活首超淘宝;网络表情已正式成为“呈堂证供” | Q资讯水货CTO入职不到半年犯下低级错误,将公司拖入无底深渊

进群资料超值活动等你参加,快来加入我们吧!

2021年Node.js开发人员学习路线图

2021年Node.js开发人员学习路线图

点个在看少个 bug 👇

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务