作者丨P. Rehan
编译丨诺亚
“Node.js有危险了!”
“任何能够自救的开发人员都应该尽快迁移到另一个后端环境!”JavaScript的仇恨者说。
不用理会这些言论。Node.js将继续存在,并将成为后端Web开发的终极游戏规则改变者。
一、是什么让 Node.js 成为后端开发的宠儿?
在过去的后端开发时代,PHP是构建Web项目的主要工具。
但随着岁月流逝,在Web开发中PHP逐渐变得不那么合时宜,就像古怪又神经质的大叔,没有人知道它为什么还存在了。之后Ruby(基于Rails)出现了,带着一箩筐的颠覆性的花哨技术,就像喝拿铁咖啡的潮人一样。我们都有过这样的“亲戚”,(可惜的是)我们并不想和他们在一起。Java就更不用提了。
直到几年前,一种新的、不那么时髦但却非常高效的东西进入了后端开发的世界,那就是——Node.js。
简单来说,Node.js是一个开源的跨平台JavaScript运行时环境,它让JavaScript成为与PHP、Python、Perl、Ruby等服务端语言平起平坐的脚本语言。值得注意的是,Node.js在2017年改变了世界,这一年它得到了广泛的使用。
Node.js的历史是在打破GitHub上的4万星标记之前创建的。它只是在Web浏览器之外运行代码的小型JavaScript环境之一。但是,事实证明,Node.js正是后端开发界多年来一直在寻找的:一个能够处理大量流量的势不可挡的迷人环境。
以下功能使Node.js成为后端Web开发的典型代表:
- 其占用空间小,使其成为基于云的应用程序的出色开发工具。
- 由于它的V8 JavaScript引擎,它几乎和光一样快。
- 应用程序开发具有很强的可扩展性和响应性。
- 它的社区中有近10万名活跃的开发人员。
- 它拥有无穷无尽的 API 和无限的生态系统,允许你创建从基本的 1-2-3 应用程序到火箭科学级微服务结构的所有内容。
二、奥秘是什么?
试想:一个后端开发环境如何在保持健壮性和响应能力的同时管理如此多的查询?流经其血管的秘密成分是什么?
Node.js除了使用与Google Chrome相同的引擎外,还采用事件驱动的非阻塞I/O方法。
正是它推动了Netflix(流媒体服务)、Discord机器人(聊天机器人)和8 Ball Pool(在线游戏)等实时应用程序的发展。
将事件驱动的非阻塞 I/O 模型想象成一个超级英雄,你将其命名为 Node-Man。
他的独特能力是处理多项任务并毫不费力地救人。他的能力来自 I/O 模型,该模型可以处理多个请求,而无需等待一个请求完成后再进行下一个请求。
这就是节点人超越闪电侠并击败钢铁侠的方式。
三、被误解的Node.js:五个必须了解的真相
以下是关于 Node.js 的五个常见误解:
1. Node.js 不是大型商业应用程序的最佳选择,因为它缺乏可扩展性。上次我们看到,每个组织都在尝试将其应用程序提升到新的性能高度,而Node.js将提供这一点。
2. PayPal,沃尔玛,Trello、领英,以及Netflix,都声称它仅适用于小型应用程序。它们是一些最复杂的应用程序,使用 Node.js 来处理请求,并且运行时几乎没有停机时间。
3. 它仅用于Web开发。事实上,Node.js 非常适合桌面应用程序、物联网设备和命令行工具。Slack和Visual Studio Code都是Electron-Node.js强大组合的产品。Gatsby和Yarn是命令行工具,用于创建在Node.js上运行的快速和安全的网站。
4. CPU 密集型任务会破坏 Node.js。当然,这是一个单线程环境,性能会受到请求数量的影响。但是,你可以通过创建任务队列或生成特定于任务的异步子进程来解决此限制。
5. Node.js 允许在最值得信赖的库上运行时进行输入验证和清理,因此它不是一个很好的安全替代方案。Node.js 支持 TLS/SSL 通信。它对通信进行加密,并保护它免受漏洞和攻击。
四、影响后端开发未来的Node.js 趋势
除了可扩展性和闪电般的效率之外,Node.js最大的优势是其简单的学习曲线。这就像在掌握节点后玩连接节点的游戏。
由于这些特性,GraphQL、无服务器计算、微服务架构和渐进式Web应用程序(PWA)等Web开发概念正变得越来越流行。
小型、独立的服务时代即将到来,每个服务都是业务功能所独有的,通过 API 进行交互,并从单个共享代码库运行。
模块化和可扩展的Web应用程序开发时代即将开启。
五、一年后Node.js会在哪里?
自2009年发布以来,Node.js已经走了很长一段路,但对于这个JavaScript跨平台来说,最令人兴奋的旅程还没有到来。
可以展望的是,Node.js最终将扬帆远航,逃离后端开发的水域。它将跟踪机器学习、人工智能、物联网设备和桌面应用程序的发展,探索其中的未知领域。
如果认为这些领域不受其他语言和库的影响,那将是愚蠢的。
GO、Deno、ASP.net和Flask等后端框架/语言对Node.js的采用和生存构成了威胁。
即使存在风险,未来也是光明和繁荣的,就像 Node.js API 库一样。
参考链接:https://pinjarirehan.medium.com/why-node-js-is-the-ultimate-game-changer-for-backend-development-26415839bbe2