Node.js 的那些与众不同

深入掌握JavaScript Node.js开发 本文还有配套的精品资源,点击获取 简介:JavaScript是前端开发中的主导语言,在Node.js环境下的服务器端编程中也显示出重要性。Node.js是一个基于V8引擎的跨平台JavaScript运行环境,具有事件驱动和非阻塞I/O特性,适用于构建高性能的并发服务器。该压缩包文件可能包含有关Node.js核心概念和模块的资料,比如模块化设计、文件系统操作、HTTP服务器创... 阅读详情

在这里插入图片描述

一、什么是 Node.js

官方定义:Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时

  1. Node.js是一个让JavaScript运行载服务器上的开发平台,他让JavaScript的触角延申到了服务器端,可以与PHP、JSP、Python、Ruby并论。但是,Node.js不是一门独立的语言,与PHP、JSP、Python、Ruby、Perl的"即是语言,又是平台"不同,Node.js 使用的是JavaScript语言进行编程,运行是在chrome的V8上。其次,与传统的后台语言相比 Node.js 不用建设在任何服务器软件之上,它的众多设计理念与经典的LAMP架构也有多不同,Node.js 具有强大的伸缩性。
  2. Node.js 是用最小的硬件成本,追求最高的并发,获得最高的处理性能。

二、Node.js 的与众不同

1. 单线程

**多线程与NodeJs单线程比较:**

常见后台语言都是多线程,在处理业务时每来一个请求,则创建一个新的线程去处理请求。因此,要让Web应用程序支持更多的用户,就需要增加服务器的数量,这样对硬件的而成本就会显著上升。
.
Node.js 不为每一个请求创建一个独立的线程,而是仅使用一个线程。当有用户连接时,就触发一个内部事件,通过非阻塞I/O、事件驱动机制,让Node.js宏观上也是并行。

**NodeJs 单线程优劣:**

优势:在于操作系统完全不再有线程创建和销毁的事件开销,即能减少内存开销,操作系统内存换页
.
劣势:如果一个业务进入了,但是被I/O阻塞了代码的执行,则也就是线程阻塞了,这样就极大的降低了程序的执行效率

2. 非阻塞 I/O

Node.js采用非阻塞 I/O 机制,在挂起了访问数据库代码之后,将立即转而执行其后面的代码,把处理数据库返回结果的代码放在回调函数中,从而提高程序的执行效率。
.
阻塞模式下,一个线程只能处理一项任务,想要提高吞吐量必须通过多线程。
.
非阻塞模式下,一个线程永远在执行计算操作,这个线程的CPU核心利用率永远是100%

3. 事件驱动

当某个I/O执行完毕时,将以是事件形式通知执行I/O的线程,线程执行这个事件的回调函数,为了处理异步I/O,线程必须有事件循环,不断检查有无未处理的事件
.
"事件环"处理机制:在一个时刻,只能执行一个事件回调函数,但是在执行一个事件回调函数的中途,可以转而处理其它事件(比如又有新用户连接了),然后返回继续执行原事件的回调函数。
.
Node的底层是C++,V8底层也是C++ 。底层代码中近半数都是关于事件队列、回调函数队列的构建 。
.
Node高性能最重要的环节:用事件驱动完成服务器的任务调度
在这里插入图片描述

三、多线程和单线程业务处理的区别

高并发 High Concurrency:是互联网分布式系统架构设计中必须考虑的因素之一,通常是指,通过设计保证系统能够同时并行处理很多请求
.
一般后台语言多线程与NodeJS单线程处理业务的不同:
在这里插入图片描述

四、Node.js搭建的服务器

1. Node 是服务器程序,写的JS语句都将运行在Node服务器上。返还给用户的,都是已经处理好的纯HTML。

JS文件本不可直接拖入浏览器运行,但是有了Node,就可以将任何一个JS文件,直接通过Node来运行。Node就是一个JS的执行环境
要跑起来一个Node服务器,这个服务器的脚本要是一个JS文件。运行该文件用的就是 node 命令。

2. Node没有Wed容器(Node没有根目录概念)

Node做的是路由的顶层设计,比如:一个网址:127.0.0.1/tmp/bar /tmp 和 /bar 并不是物理文件夹
即:Node里面一个URL和真实的物理文件是没有关系的,URL是通过Node的顶层设计,呈现某一个静态文件的,它可以路由到任何一个静态文件上去。

五、应用

1. 开发方向

  1. nodeJs 善于I/O,不善于计算,因为nodejs最擅长的就是任务调度,如果你的业务有巨量的CPU计算(同步代码),实际上也相当于这个计算阻塞了整个线程,即巨量的计算不适合NodeJS开发。
  2. 当应用程序需要处理大量高并发的I/O,而在向客户端发出响应之前,应用程序内部并不需要复杂的处理的时候,NodeJs非常适合。
  3. 适合与 web socket 配合,开发长连接的实时交互应用程序。

2. 主要应用

  1. Web服务 API 如:REST
  2. 实时多人游戏
  3. 后端的web服务,如:跨域、服务器端的请求;
  4. 多客户端的通信,如:即时通信
  5. 基于Web的应用 如:用户表单收集

六、前景

  1. Node.js是极客追求性能极致的产物,缺少了很多服务器的健壮考量 。所以node不会在银行、证券、电信等对可靠性要求高的业务中
  2. 成熟企业,基本都用Node实现某一方面的功能,如知乎的站内信、百度的大部分表单与数据库的交互
  3. Node不是银弹,Node只是工具箱中的一个小工具
Node.js环境下的JavaScript代码执行指南 Node.js是基于Chrome V8引擎的JavaScript运行环境,它使得JavaScript能够运行在服务器端。作为后端技术,Node.js提供了丰富的API,用于构建高性能、可伸缩的网络应用。Node.js以其事件驱动和非阻塞I/O模型在Web应用开发领域内得到了广泛的应用。Node.js的流行主要得益于其强大的生态系统和社区支持。其核心库由简单实用的模块组成,通过npm(Node Package Manager)可轻松扩展。 阅读详情

相关推荐

NXP实战笔记(十五):32K3xx基于RTD-SDK在S32DS上安装HSE之后,进行AB SWAP功能实现OTA升级。

1.HSE 切换服务相关的变量,要放在合理的内存空间,可以参照HSE 安装的潜在失败原因分析。例如,在切换过程中,存在下面的变量,如果不放在dtcm或者no-cable的话,可能会导致切换不成功(非常重要)。链接文件里面设置2.连续两次操作,间隔时间太短,一般认为小于1s.如果连续两次切换,会导致程序死掉。但是重新上电reset之后,程序仍然会执行切换后block的程序。解释如下图:3.切换时未获取SU权限。但在实际的项目工程中,经调试发现如果不获取SU权限,也可以实现。

梦想技术家 3114

nodejs和js之间有什么区别?

如果要执行JavaScript代码,需要一个js引擎,你可以安装一个浏览器(内置js引擎),或nodejs环境(内置js引擎),如果你在js代码中调用了浏览器提供的API,则必须安装一个浏览器,若调用了nodejs API,则必须安装nodejs环境,然后以各自规定的方式加载、执行JavaScript代码。 第一,JavaScript是一门编程语言(脚本语言),而Node.js是一个平台,可以简单理解为它是JavaScript的一种执行环境。 第二,JavaScript以前是在浏览...

liuxiaoniudechuntian的博客 7254

让Qt程序适配高分辨率屏幕,解决软件界面错乱异常

前期使用Qt开发一个登录模块一直使用很好。最近在一台新电脑上使用时发现排版混乱。这个问题很普遍,主要原因是旧软件对高清显示器的适配不当造成的。新电脑使用的是4K屏,win10系统自动进行了175%的缩放。

cihron的博客 1万+

Node.js 是什么?Node.js与JavaScript的区别是什么?

node.js是什么?Node.js是一个Javascript运行环境(runtime)。Node.js与JavaScript的区别是什么?本质:     Javascript是一种web前端语言,主要用于web开发中,由浏览器解析执行     Node.js是一个可以快速构建网络服务及应用的平台,是用Javascri...

吴甜甜的技术博客 3万+

Brim与ZUI协同安装指南:从下载到流量分析实战

本文提供Brim与ZUI协同安装与实战指南,详细讲解从下载、环境变量配置到流量分析的全流程。通过将PCAP文件转换为ZNG格式,结合直观的Zed查询语言,这套组合能极大提升大型网络数据包的分析效率,是网络安全与运维人员进行高效流量分析的利器。

metal的博客 458

Ollama本地大模型部署指南:从核心原理到实战避坑

大语言模型(LLM)作为人工智能领域的核心技术,通过海量数据训练获得强大的语言理解和生成能力。其工作原理基于Transformer架构,通过自注意力机制处理序列数据,在文本生成、代码编写和对话系统等场景展现出巨大价值。随着开源模型的普及,本地部署成为关注焦点,它解决了数据隐私和定制化需求,但面临环境配置和资源管理的挑战。Ollama作为开源工具,通过封装模型格式和统一API,简化了本地部署流程,支持GPU加速和性能调优,让开发者能够快速集成到IDE和自动化脚本中,实现高效的本地AI应用部署。

weixin_30915951的博客 451

JS和node.js的区别

JS和node.js的区别 什么是node.js node.js是一个基于 Chrome V8 引擎的 JavaScript 运行时的环境。 什么是JavaScript 2.1比较JavaScript 和 Java 两者之间没有关系 V8是google开源的JavaScript引擎,用于执行JavaScript;类似JVM执行java字节码。在node.js 诞生之前,V8是内置于Chromeium中的,现在也内置于node.js中。 node.js = v8 + 内置基本模块(大多用JavaScr

贪吃ღ大魔王 1158

MMDetection框架入门教程(完全版)

  网上MMDetection的教程看似有很多,但感觉都不成系统,看完一圈下来还是不知道MMDetection要怎么用。这里还是推荐直接跟着官方教程,结合源码学习MMDetection,相关链接汇总如下: 官方教程 - MMCV 官方教程 - MMDetection 官方教程 - 不得不知的 MMDetection 学习路线(个人经验版) 西安交大课件 - mmdetection教程(使用篇)   本文会介绍如何在MMDetection中从头开始搭建一套属于自己的算法。前几篇博客算是本人学习过...

Sual 10万+

node.js 初识node.js,运行在服务端的 JavaScript(一)

文章目录1.浏览器原理2.浏览器访问服务器过程3.web开发本质4.什么是node.js?5.node.js有哪些特点?6.安装Node.js 1.浏览器原理 2.浏览器访问服务器过程 https://edu.aliyun.com/lesson_1730_14083?spm=5176.10731542.0.0.4fb815f2VGm9PU#_14083 请求报文和相应报文。 3.web开发本质 一般web都是下面三点一样: 1.请求,客户端发起请求。 2.处理,服务器处理请求。 3.响应,服务器将处理结果

探索技术与实践的旅程,分享编程经验与工具使用心得,助力开发者提升技能。 1万+

2023年全国职业院校技能大赛高职组“区块链技术应用”赛项赛卷(3卷)解析

我们先绘制题组中所有设计图我这边作图用的国内的在线作图工具。

2301_76737000的博客 5419

《UDS协议从入门到精通》系列——图解0x2E:通过ID写数据

图解数据包格式+直观的通信示例,迅速认识0x2E服务!!

车载系统攻城狮 3602

Node.js中运行JavaScript代码

最近学习JS的内容,有幸得到Bill的指点,之前自己运行JS的脚本是在浏览器上,之后惊喜的发现,可以在加载Node.js环境中,在命令窗口运行脚本。这样做的好处是什么呢?大大的减少了窗口来回切换的的频率,提高我们的效率。看起来也是很高大上的。

No body But u 8209

Go语言Gin框架项目:从零到一搭建一个用户管理系统

本文介绍了一个基于Go语言Gin框架开发的用户管理系统。系统采用MySQL数据库存储数据,使用Bootstrap 5构建现代化UI界面,实现了完整的CRUD功能。主要特点包括:RESTful API设计、前后端双重表单验证、实时搜索功能、SQL防注入措施以及响应式布局。项目结构清晰,包含数据库配置、用户模型、处理器和前端模板等模块。系统提供用户列表展示、新增/编辑表单、删除确认等功能,通过参数化查询确保安全性,并支持按姓名或邮箱搜索用户。

数据知道的博客 3995

【Node.js】使用 Node.js 需要了解多少 JavaScript?

总的来说,使用 Node.js 开发并不要求你掌握所有 JavaScript 的高级知识,但了解 JavaScript 的基础和异步编程的核心概念,将大大提高你的开发效率。通过不断学习和实践,你将能够利用 Node.js 构建出高效、可扩展的应用程序。希望本文能帮助你了解在学习 Node.js 之前需要掌握的 JavaScript 知识,帮助你在 Node.js 的开发路上走得更远。祝你编码愉快!

佚名程序员 1935

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Node.js | JavaScript也能写后端?

Node.js作为前端人员高薪必备技能,本文带你了解Node.js的前世今生以及环境搭建

只想和你一起进步 9954

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

node.js和javascript的关系

node.js是一个基于 Chrome V8引擎的 JavaScript 运行时环境 一、类比JavaScript和java JavaScript java V8 JVM node.js JRE JavaScript和java都是一门编程语言,至于两者的关系,是雷锋和雷峰塔的关系 V8是google开源的JavaScript引擎,用于执行JavaScript,...

【小石头的茅坑】 71万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

node.js和JavaScript的关系

1. 什么是node.js node.js是一个基于 Chrome V8 引擎的 JavaScript 运行时的环境。 2. 什么是JavaScript 2.1比较JavaScript 和 Java 两者之间没有关系 V8是google开源的JavaScript引擎,用于执行JavaScript;类似JVM执行java字节码。在node.js 诞生之前,V8是内置于Chromeium中的,现在也...

weixin_41160054的博客 5529

什么是Node.js

JavaScript是一种Web前端语言,Node.js让JavaScript成为服务器端脚本语言。

m0_56649557的博客 9708

JavaScript和Node.js的关系

JavaScript和Node.js的联系与区别。

cnds123的专栏 4503

Node.js 和 JavaScript 的区别:深入解析

JavaScript 和 Node.js 的核心区别在于运行环境与应用场景。JavaScript 主要运行于浏览器,用于 DOM 操作和前端交互,受限于沙盒安全机制;Node.js 则是基于 V8 引擎的服务器端运行时,提供文件系统、网络等底层 API,擅长高并发 I/O 操作。两者共享语言语法,但功能生态不同——前端依赖浏览器 BOM/DOM,后端则通过 npm 模块扩展能力。理解这些差异有助于开发者针对 Web 前后端场景选择合适方案,构建高效应用。

你若盛开,清风自来 1850

Node.js和Javascript的异同

JavaScript的组成: ECMAScript(语言基础,如:语法、数据类型结构以及一些内置对象) DOM(一些操作页面元素的方法) BOM(一些操作浏览器的方法) Nodejs的组成: ECMAScript(语言基础,如:语法、数据类型结构以及一些内置对象) os(操作系统) file(文件系统) net(网络系统) ...

【小石头的茅坑】 71万+

Next.js, Node.js, JavaScript, TypeScript 的关系

【代码】Next.js, Node.js, JavaScript, TypeScript 的关系。

坚持输出,记录成长。 1728

Node.js和前端JavaScript有什么区别?

Node.js 和前端 JavaScript 在语法上基本相同,但它们的运行环境、用途、模块系统以及性能优化策略有着显著的区别。前端 JavaScript 专注于浏览器端的交互和界面逻辑,而 Node.js 扩展了 JavaScript 的应用范围,使其能够在服务器端运行,处理文件、网络和数据流等任务。了解这些区别对于选择合适的工具和策略来构建高效、可维护的应用程序至关重要。最后问候亲爱的朋友们,并邀请你们阅读我的全新著作书籍详情。

有我更精彩的博客 1508

Node.js 与 JavaScript 事件循环的关系

在现代Web开发中,Node.js和JavaScript都是不可或缺的一部分。而理解它们之间的关系,特别是事件循环的概念,对于开发高效、响应迅速的应用程序至关重要。在这个博客中,我们将深入探索事件循环的工作原理,并且结合Node.js的特性,通过示例代码进一步阐明两者之间的联系。

有我更精彩的博客 1637

[Node.js]如何在IDEA中配置Node.js

选择节点解释器(在安装的Node.js里找到相应的node.exe)此时IDEA会自动找到相应的软件包管理器(npm.cmd)

weixin_66896881的博客 2万+

什么是Node.js?安装Node.js了解事件循环Node.js和浏览器JavaScript的区别

Node.js是一个基于Chrome V8引擎的JavaScript运行时环境,它使得JavaScript能够在服务端运行,从而与PHP、Python等服务端语言平起平坐。Node.js以其简单易学、开发成本低、高并发等特点,在网站开发中非常流行。Node.js发布于2009年5月,由谷歌工程师Ryan Dahl开发,是一个开源项目。它不仅支持现在大部分的主流浏览器(如Chrome、Microsoft Edge、Opera等),还通过其模块化的设计方式,提高了代码的复用率和可维护性。

weixin_41978174的博客 991
上一篇: 浅析HTTPS加密传输协议的基本原理
下一篇: 一个简单的 HTML + Node.js + MongoDB数据交互
JasoncodeQvQ
博客等级 码龄7年 458粉丝 97原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值