一切都与 NodeJS 有关
NodeJS 的历史
NodeJS 到底是什么?
为什么选择 NodeJS?
我们可以在哪里使用 NodeJS?
NodeJS 之所以如此受欢迎,主要原因之一是它使用 JavaScript 作为开发新应用的主要语言。此外,JavaScript 也是开发者开发新 Web 应用的首选。这个全新且强大的框架被推荐给许多新开发者,为他们带来了令人惊叹的体验。想知道什么是令人惊叹的体验,那么这篇文章正适合你……
NodeJS 的历史
-
撰写并介绍者 :Ryan Dahl,2009 年。
-
官方网站 :https://nodejs.org
-
Github :https://github.com/nodejs/node
-
下载 Nodejs :https://nodejs.org/en/download/
NodeJS 到底是什么?
NodeJS = 运行环境 + JavaScript 库
-
Node.js 是一个基于 Chrome V8 JavaScript 引擎构建的开源服务器端运行时环境。它提供了一个事件驱动、非阻塞(异步)I/O 和跨平台的运行时环境,用于使用 JavaScript 构建高度可扩展的服务器端应用程序。
-
Node.js 是开源的、完全免费的,并且被全球成千上万的开发人员使用。
-
对于 NodeJS,你应该对 JavaScript 有基本的了解。当你打算使用 Node.js 开发基于 Web 的应用程序时,如果你对其他 Web 技术(例如 HTML、CSS 和基本 JavaScript)有所了解,那就更好了。
“这只是意味着您可以使用 JavaScript 进行后端开发”。
为什么选择 NodeJS?
让我们深入了解 NodeJS 的一些很棒的功能:
1.非阻塞:
非阻塞意味着当我们等待执行链之外的某些任务的响应时(例如,加载数据、读取数据库或轮询远程服务),我们会继续执行堆栈中的下一个任务。这个概念具有革命性,使 NodeJS 极其快速高效。
2. 单线程
NodeJS 是一种单线程语言,它在后台使用多个线程执行异步代码。它是非阻塞的,这意味着所有函数或回调都委托给事件循环,并且它们由(或可以)不同的线程执行。这些操作由 NodeJS 运行时处理。
3. 异步和事件驱动
Node.js 库的所有 API 都是异步的,也就是非阻塞的。这意味着基于 Node.js 的服务器永远不会等待 API 返回数据。服务器调用后会转到下一个 API,而 Node.js 的事件通知机制可以帮助服务器从上一个 API 调用中获取响应。
同步和异步有什么区别?
同步 :同步执行某项任务,等待其完成后再继续执行另一项任务。
异步:请求某件事发生,当它发生时收到通知。同时执行其他操作。
服务器可以同时响应多个请求。它不会停止或阻止任何 API 请求,并且会在响应准备好发送时响应所有请求。
所有事情都是基于事件的。这种方法会在事件发生(状态改变)时触发回调(大多数情况下是函数)。基于事件的系统总是循环执行其职责。
4. Node 包管理器 - NPM
-
npm是世界上最大的软件注册中心。
-
该注册表包含超过 700,000 个代码包。
-
开源开发人员使用 npm 来共享软件。
-
许多组织也使用 npm 来管理私人开发。
-
npm 可以免费使用。
无需注册或登录即可下载所有 npm 公共软件包。
C:\>npm install <package>
- 所有 npm 包都在名为package.json的文件中定义。
5. 无缓冲
Node.js 应用程序从不缓冲任何数据。这些应用程序只是将数据分块输出。因此用户可以轻松观看视频或流媒体,而不会受到干扰。
6.易于扩展且重量轻:
由于 Node.js 是一种轻量级技术工具,因此将其用于微服务架构是一个不错的选择。
因此,将应用程序逻辑分解成更小的模块(微服务),而不是创建单个庞大的单片核心,可以实现更高的灵活性,并为进一步的增长奠定基础。因此,在现有微服务之上添加更多微服务比在基本应用功能中集成其他功能要容易得多。
我们可以在哪里使用 NodeJS?
根据 NodeJS 的最新调查,Web 应用程序是 NodeJS 最主要的用例,占比高达 85%。考虑到这个 JS 运行时环境的所有优缺点,我们整理了一份可以利用该技术的实用解决方案列表。
1.单页应用程序
单页应用 (SPA) 是指将整个应用程序部署在一个页面上。在这种情况下,Node.js 应用开发非常适合制作 SPA,因为它的后端数据流是异步的。事件循环会“捕获”客户端同时发出的请求,从而提供流畅的数据更新。实际上,它消除了每次获取新数据时刷新页面的必要性。
2. 流媒体应用
流是支持 Node.js 应用程序的基本概念之一。
-
我们每天都使用流媒体服务听音乐或看视频。无需下载内容,我们就能在网上观看自己喜欢的电视剧。
-
那么 Nodejs 是流式传输数据的理想选择吗?当然!它内置了Streams 模块,允许你以块的形式按顺序传输大量数据。因此,你完全不需要在应用程序内存中临时存储或缓存数据。此外,你可以在流式传输的同时处理数据块,因此例如编码视频将不再是问题。
3.聊天应用程序
-
Node.js 提供了构建任何复杂程度的实时聊天所需的所有基本功能。特别是,Node 拥有强大的事件 API,它有助于创建某些类型的对象(“发射器”),这些对象会定期发出由事件处理程序“监听”的命名事件。
-
借助此功能,Node.js 可以轻松实现即时通讯和其他实时应用程序中广泛使用的服务器端事件和推送通知。
4. REST API
基于表述性状态转移 (REST) 的应用程序编程接口 (API) 在构建现代企业软件架构中占据着基础地位。
REST 服务器仅提供对资源的访问,而 REST 客户端则使用 HTTP 协议访问和修改资源。每个资源都由 URI/全局 ID 标识。REST 使用各种表示形式来表示资源,例如文本、JSON、XML,但 JSON 是最流行的。
Node.js 提供 Express.js 框架来构建轻量级、快速的 REST API。
5.实时应用
实时协作应用程序为共同浏览、项目管理、视频和音频会议提供了各种各样的软件解决方案。
Node.js 非常擅长处理大量的 I/O 操作,你可以用它来构建实时应用程序,例如,一个可以实时聊天的聊天室。或者一个协作工具,让同事们可以同时处理同一个文档。构建一个视频会议应用程序也不成问题。这得益于 Node 的 Events API 和 WebSockets。
与实时聊天的情况一样,Node 的异步和基于事件的架构非常适合协作应用。在这些应用中,许多事件和 I/O 请求会并发发生。例如,多个用户可以编辑同一段文字、发表评论、发布消息并附加媒体文件。对某一内容的更改可能仅在一系列事件之后才会生效,其中每个步骤都依赖于前一个步骤。
6.应用程序监控
Web-Sockets 的另一个常见用例非常适合:我们可以追踪网站访客,并实时可视化他们的互动。您可以收集用户的实时统计数据,甚至可以更上一层楼,在访客到达网站的特定位置时,开启一个沟通渠道,从而与访客进行有针对性的互动。
想象一下,如果您能够实时了解访客的行为,并可视化他们的互动,您的业务将如何提升。现在,借助 Node.js 的实时双向套接字,您就可以做到这一点。
NodeJS 堆栈
MERN 堆栈 :MongoDB + ExpressJS + React + NodeJS
MEAN 堆栈 :MongoDB + ExpressJS + Angular + NodeJS
MEVN 堆栈 :MongoDB + ExpressJS + VueJS+ NodeJS
谁使用 NodeJS?
Node.js 正日益成为全球众多公司的首选技术。由于 Node.js 注重并发性、速度和密集数据交换,并采用基于 Web 套接字的推送技术,它已帮助众多公司构建了各种应用程序,例如社交媒体应用、视频和文本聊天引擎、实时跟踪应用、在线游戏以及协作工具。以下是一些信赖 Node.js 的全球巨头:
10 家依赖 NodeJS 的全球公司
- 美国宇航局
- Netflix
- PayPal
- 优步
- 领英
- 中等的
- Trello
- 易趣
- Groupon
- 沃尔玛
学习资源
教程
视频
课程
结论 :
很简单, Node.js无疑是市场赢家。现在,您已经了解了 Node.js 如何统治 Web 开发领域,它为何如此受欢迎,以及它可以在哪些领域实现。您可以决定 Node.js 是否适合您,并使用 Node.js 启动您的第一个 Web 应用。
参考文献 :nodejs.org、software house、netguru
“如果你想编写代码,那么就开始学习 NODE...!”
如果您希望我撰写有关任何概念的文章,请在评论中留下该主题。
欢迎反馈
文章来源:https://dev.to/ozakaran/it-s-all-about-nodejs-37k4