likes
comments
collection
share

Node 2023 高频问答,我曾反复拷问我的灵魂......

作者站长头像
站长
· 阅读数 48

《前端暴走团》,喜欢请抱走~大家好,我是团长林语冰。

FAQ 全称 Frequently Asked Question,即“常见问题解答”,比如面试 FAQ 又名“面试重灾区”(bushi)......

Node 是一个单线程运行时环境,用于诉诸 JS 编写服务端应用程序,并且可能是构建全栈应用程序的最佳解决方案之一。

Node 深受许多知名国际公司的宠幸,这可能会鼓励其他公司将其视为在自己的软件开发工作中使用的正确选择。

在这篇博客中,我们会解决在尝试决定是否将 Node 实施到应用程序的技术堆栈中时,可能遭遇的 Node 相关的最常见问题。

Node 2023 高频问答,我曾反复拷问我的灵魂......

免责声明

本文属于是语冰的直男翻译了属于是,略有删改,仅供粉丝参考。英文原味版请传送 Node.js Development FAQ—Everything You Need to Know in 2023

1. Node 是一种编程语言吗?

Node 2023 高频问答,我曾反复拷问我的灵魂......

尽管 Node 偶尔被错误解读,但它并非一种编程语言。

JS 起初只与 Web 开发的前端相关,但随着 2009 年 Node 横空出世,JS 生态系统突然闯入到后端。

通过使用 MEAN、MEVN 等工具或其他 JS 相关的解决方案,Node 成为纯粹使用 JS 构建全栈应用程序的任意门。

粉丝请注意,这里的 MEVN 是一个全栈开发技术栈的首字母缩写组合,即:

  • MongoDB
  • ExpressJS
  • Vue
  • Node

Node 2023 高频问答,我曾反复拷问我的灵魂......

上述技术栈统称为 MEVN,举一反一,MEAN 同理可得。

Node 基于谷歌 Chrome 的 V8 JS 运行时引擎,可将 JS 代码转换为低阶机器代码,快速且轻量。

2. Node 可以用来干啥?

Node 的经验法则是使用它来构建生成大量 I/O 操作的实时应用程序,这实际上意味着,应用程序需要巨大的流量负载。

这包括但不限于:

  • 游戏应用程序
  • 社交网络应用程序
  • 物联网设备和应用程序

Node 2023 高频问答,我曾反复拷问我的灵魂......

3. 我可以将 Node 用于微服务和云开发吗?

Node 2023 高频问答,我曾反复拷问我的灵魂......

微服务架构

采用微服务架构意味着,构建由单独服务组成的应用程序,其中每个服务负责处理不同的任务。与处理大型单片核心相比,采用微服务架构可以更轻松地扩展生成的应用程序,并实现附加功能。

选择 Node 作为我们微服务架构的技术将带来灵活、轻量级且高性能的应用程序。

微服务的另一个福利在于,我们可以拥有只负责自己的代码库部分的小团队。因此,如果我们需要对应用程序进行任何更改,可以根据业务需求增量更新代码库。

此外,部分代码可以使用不同的编程语言进行开发,使我们可以更好地控制功能和性能。

Serverless 架构

在谈论 Node 时,值得一提的是与微服务相反的 Serverless 架构方案。

Serverless 意味着开发者无需管理服务器,而是在编写代码时使用函数,从而能够部署任何单独的代码或函数。因此,账单是根据函数的调用次数计算的,从而使此类服务易于扩展。

Node 的 Serverless 意味着 DevOps 的零支出 —— 重点关注处理服务器的操作,这在微服务中是相当奢侈的事情。总体而言,开发成本低于管理标准基建的成本。

4. Node 推荐的业务规模

企业级开发

Node 2023 高频问答,我曾反复拷问我的灵魂......

Node 十分适合微服务架构,并满足未来的可扩展性需求。因此,我们推荐将 Node 用于企业级大型项目。

初创公司

许多初创公司决定将 Node 部署到它们的后端技术堆栈中,正是因为 Node 的可扩展性。初创公司也倾向于选择 Node,因为它允许它们招聘更少的开发者构建应用程序,从而“开猿节流、降本增效”。

5. Node 推荐的开发行业

由于 Node 可以妥善处理数据密集型任务,因此建议用于旅游业网站,或需要连接到各种 API 来获取数据源的地方。

Node 的其他热门行业包括娱乐、赌博和房地产行业。

6. Node 适合原型设计和 MVP 吗?

由于 Node 在 npm 中附带了大量模块存储库,因此开发者可以相对快速地进行原型设计,并构建 MVP。Node 的可扩展性和性能是一个优势,防止应用程序需要纵向扩展或扩展。

虽然但是,依赖 npm 的第三方模块会带来一定的缺陷,比如无法评估模块质量或有大量模块可供选择。这就是为什么寻找具有 Node 经验的开发者至关重要。

7. 我能用 Node 构建桌面应用程序吗?

Node 2023 高频问答,我曾反复拷问我的灵魂......

理论上可行,我们可以使用 Node 构建桌面和移动应用程序。虽然但是,这主要得益于 JS 运行环境,而不是 Node 本身的特性,因为它是一个典型的服务器工具。

通过使用 Electron 等框架,我们可以借用 Web 应用程序的部分代码,并在此基础上构建应用程序的桌面版本。该解决方案允许开发者只使用 JS、HTML 和 CSS 创建原生桌面应用程序,无需深度学习 Objective-C 或 C#。

8. Node 可以用来构建 AI 和机器学习算法吗?

Node 2023 高频问答,我曾反复拷问我的灵魂......

虽然 Node 拥有用于将基于 AI 的元素合并到应用程序中的库和工具,用于机器学习的 TensorFlow.js 就是一个例子,但它并不是这项特定技术的最佳实践。

对于 AI 和机器学习脚本而言,Python 和 Ruby 是更好的选择。

9. Node 有多快?

我们说过 Node 很快,但是它与其他流行的服务器端语言相比又如何呢?

当涉及 PHP、Ruby、Java 或 Python 时,使用 Node 构建的应用程序将表现出更高的性能。另一方面毋庸置疑的是,GoLang 或 Erlang 等高速后端语言确实宰制了后端开发的性能领域。

因此,在决定特定的后端技术之前,必须与开发团队彻底讨论应用程序的性能需求。

10. 开发者可用性

Node 人气和热度蒸蒸日上。随着越来越多的大公司选择 Node 作为其技术堆栈,开发者对 Node 技能的需求也与日俱增。

由于开发者正忙于完善它们的 Node 技术,市场需求仍远未饱和。要寻找有才华的 Node 开发者,我们可能需要放眼四海钓大鱼。

11. 谁在使用 Node?

许多国际知名品牌已经将 Node 实施到它们的技术堆栈中,并对其速度和较小的开发者占用环境好评如潮。以下是信任 Node 的主要公司的简短列表:

  • 推特
  • 优步
  • 网飞

12. 使用 Node 进行开发的主要好处

可以说,Node 开发的最大优势在于,可以使用一种 JS 语言编写 Web 应用程序的整个基础架构。

降低招聘成本

全栈 JS 开发自然需要更少的开发者,因为一个团队可以快速浏览 JS 环境、管理代码,并根据项目需求对其进行扩展。这反过来又大大降低了人力资源成本。

Node 性能惊人

Node 的事件驱动架构使其成为一种快速技术,Node 不会为每个请求创建多个线程,也不会等待一个请求完成后再启动另一个请求,而是会同时发起多个请求。

Node 极具创意

Node 附带了开发者世界中最大的库存储库 —— npm,即 Node 的软件包管理器。Node 模块可以在代码中复用,为应用程序注入更多功能。存储库的开源性质促进了创新解决方案的出现,降低了开发成本,并缩短了部署时间。

坚强后盾

Node 拥有强大的企业支持。Node 基金会的成员包括谷歌、微软、因特尔等科技巨头。这种行业支持与长期支持相结合,确保了该技术会继续红红火火,并为使用 Node 的公司提供充足的时间,来顺利过渡到 Node 的新版本。

13. Node 开发的主要缺陷

Node 并不适合所有人

Node 成为实时应用程序的绝佳选择的原因,限制了它在图形处理、视频和音频编辑等其他应用程序中的性能。一般而言,对 CPU 占用较大的操作最好使用其他流行且可靠的编程语言编写,比如 Ruby、PHP 或 Python。

强烈不建议将 Node 用于 CPU 密集型任务,因为一旦资源需求量大的请求进入事件循环,它就会阻止其他请求得到响应,直到该请求完成为止。

npm 没有附带完全指南

尽管 npm 本身就是一种令人叹为观止的资源,但它也可能是一把双刃剑。虽然 npm 提供的大多数库都很稳定,但在 npm 拥有的名副其实的模块汪洋中,可能很难找到那些值得信赖的库来很好地完成工作。npm 也不包含评估包质量的功能,并且许多库的文档不完整或没有文档。

回调地狱

Node 2023 高频问答,我曾反复拷问我的灵魂......

Node 是异步的,这意味着,它执行请求时不依赖于其他任务的完成情况。为了保持 Node 的非阻塞特性,必须将带有回调的函数写入代码中。

这有时会导致“回调地狱”,即一个回调被嵌入另一个回调中,从而导致代码难以管理和破译。值得注意的是,“回调地狱”并不一定是 Node 本身的缺陷。这更多地表明缺乏经验和对 JS 范例的误解 —— 其中代码异步执行,而不是逐行执行。

本期话题是 —— 关于 Node,你有想分享的其他回头率超高的误区或难点吗?欢迎在本文下方自由言论,文明共享。

坚持阅读,自律打卡,每天一次,进步一点。

《前端暴走团》,喜欢请抱走!我是团长林语冰。谢谢大家的点赞,掰掰~

Node 2023 高频问答,我曾反复拷问我的灵魂......

转载自:https://juejin.cn/post/7352322041850347546
评论
请登录