Node.js到底是个啥?干什么用的?优缺点是什么?

2023-11-02

Nodejs简介:

Node.js是一个Javascript运行环境(runtime)
是一个可以快速构建网络服务及应用的平台,是用Javascript语言构建的服务平台,可用于后端建立服务器

Node.js与Javascript的区别:

node.js 主要应用后端 ‘平台运行环境’(一个基于Chrome JavaScript运行时建立的平台,它是对Google V8引擎进行了封装的运行环境)简单的说node.js就是把浏览器的解释器封装起来作为服务器运行平台,用类似javascript的结构语法进行编程,在node.js上运行
Javascript主要应用前端,是编程语言 ,客户端编程语言(需要浏览器的javascript解释器进行解释执行)

Node.js的优点:

1.事件驱动
2.异步编程
3.非阻塞模式的IO
4.轻量高效

Node.js的缺点:

1.可靠性低
2.单进程,单线程,只支持单核cpu,不能充分的利用多核cpu服务器。一旦这个进程崩掉,那么整个web服务就崩掉了。

Node.js适用场景:

1.JSON APIL ——构建一个Rest/JSON API服务,node.js可以充分发挥其非堵塞IO模型以及javascript对JSON的功能支持
2.单页面、多Ajax请求应用——前端有大量的异步请求,需要服务器后端有极高的响应速度
3.基于node.js开发Unix命令行工具——node.js可以大量产生子进程,并以流的方式输出
4.流式数据——传统的web应用,通常会将HTTP 请求喝响应看成是原子事件。而node.js会充分利用流式数据这个特点,构建非常酷的应用

Node.js不适用场景:

cpu使用率较重、io使用率较轻的应用Node.js的基本语法
基本语法与 javascript 一样这里我们使用exports导出一个函数,然后再另一文件中通过require导入入一个模块
例如 :在 a.js 中写一个函数var hello=function(){ console.log(‘hello’)}export.hello=hello;在 b.js 中 需要用hello这个函数var a=require(‘a’);a.hello()单线程
Node的设计中就是将耗时长的操作代理给操作系统或者多线程,这部分操作就是磁盘I/O和网络I/O。所以Node中异步非常常见,因为要将耗时的操作从主线程上脱离。但是这些I/O线程并不怎么耗费CPU。无法利用多核CPU是指Node的主线程无法利用上硬件上额外的CPU。这就需要用到cluster来在机器上启动多个Node实例,将额外的CPU也使用上。
异步 IO事件驱动REPLREPL(Read-Eval-Print Loop) 中文的话有翻译成“交互式解释器”或“交互式编程环境”的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Node.js到底是个啥?干什么用的?优缺点是什么? 的相关文章

  • Node.js:如何将流读入缓冲区?

    我编写了一个非常简单的函数 从给定的 URL 下载图像 调整其大小并上传到 S3 使用 gm 和 knox 我不知道我是否正确地将流读取到缓冲区 一切正常 但这是正确的方法吗 另外 我想了解有关事件循环的一些信息 我如何知道函数的一次调用不
  • node.js 和 npm 在 Windows 7 64 位旗舰版中没有网络访问权限

    注意 对于遇到此问题的其他人 我尝试了所有建议和所有研究 最后我格式化了硬盘并重新安装了windows 尽管从一开始就是全新安装 但某些 Windows 安装似乎根本无法与 Node 一起使用 据我所知 这是唯一的解决方案 首先 我已经发现
  • 访问 Node.js 全局模块

    npm 文档是这样说的 如果您正在安装想要在程序中使用的东西 请使用 require whatever 然后将其安装在本地项目的根目录下 如果您要安装要在 shell 中使用的东西 请在命令行或 某些东西 全局安装它 以便它的二进制文件最终
  • 具有匹配模式的 ioredis 密钥

    我想用键匹配模式 LOGIN 搜索 Redis 数据库 我在我的应用程序中使用 ioredis 昨天我搜索了整个网络 我得到了一些执行这项工作的选项 如下所示 KEYS 扫描流 Issue import Redis from ioredis
  • express.io VS express + socket.io 有什么用处?

    我在这里发现了 socket io 和聊天示例 https github com rauchg chat example blob master index js https github com rauchg chat example b
  • 如何在 package.json 中对嵌套子模块和 TypeScript 使用“导出”?

    我想利用新的优势 出口 https nodejs org api packages html packages exportsNode js 的功能package json这样我就可以执行以下操作 exports dist index js
  • 节点检查器显示对象“无属性”

    我在调试场景中相当陌生 尤其是节点检查器 安装节点检查器后 我使用 debug 参数启动了简单的节点应用程序 并且能够在 localhost 8080 debug port 5858 处看到调试视图 当我让应用程序在此断点处停止时 rout
  • 以html格式显示npm审计漏洞

    有没有办法将 npm 审计报告显示为 html 页面 目前我只能看到使用以下命令以 json 格式输出报告的选项 npm audit json 我写了一个NPM包 https www npmjs com package npm audit
  • Typescript 和 Mongoose - “this”在实例方法中不可用

    我目前正在将我的 API 从 JS 转换为 TS 然而 我在猫鼬和打字稿方面遇到了一些困难 具体来说 this在我的实例方法中不可用 My code AccountSchema methods comparePassword async f
  • MongoDB,从数组中删除对象

    Doc id 5150a1199fac0e6910000002 name some name items id 23 name item name 23 id 24 name item name 24 有没有办法从数组中提取特定对象 IE
  • 如何在 PyV8 中加载 Nodejs 模块?

    如何在 PyV8 中加载 Nodejs 模块 我读过所有关于 jsdom 在与 Nodejs 一起运行时有多么出色的内容 如果我在 Python 应用程序中运行 v8 使用 python 获取 Web 资源 然后将生成的 html 字符串提
  • Angular2 + Laravel 与实时和 WebSockets

    我构建了一个应用程序 并计划与 Angular 2 和 laravel 进行实时战斗 例如 你按下 攻击 按钮 你的对手就会实时看到他的生命在下降 我的应用程序构建有 前端 角2 Backend PHP Laravel 5 2 现在我正在寻
  • Sequelize.js - “不关联到”

    我在从数据库获取完整数据时遇到一些问题 那是我的模型 User module exports function sequelize DataTypes return sequelize define user id type DataTyp
  • 当请求新页面时,如何将 AngularJS 路由与 Express (Node.js) 结合使用?

    我正在使用 Express 它从静态目录加载 AngularJS 一般情况下我会要求http localhost 其中 Express 为我服务index html以及所有正确的 Angular 文件等 在我的 Angular 应用程序中
  • npm install 命令下载所需包的源位置是什么?

    我试图获取命令 npm install 尝试连接的源位置 URL 并根据 package json 文件获取要下载的依赖包 并将其放置在本地框中 从下面提到的网址 http www tutorialspoint com nodejs nod
  • 护照:登录和帐户注册的不同重定向

    我在我的应用程序中使用护照模块 github身份验证 我想根据操作进行重定向 我检查这是否只是正常登录或者用户是否第一次登录 passport use new GitHubStrategy clientID conf github app
  • Cloud Functions for Firebase - 通过 Nodejs/Cloud Function 将多个 PDF 合并为一个

    我遇到了一个问题 我试图通过云功能合并一堆 PDF 然后将合并的 PDF 下载到用户的计算机上 我的提供程序中有一个函数 它调用云函数并传递指向 pdf 的 URL 数组 如下所示 mergePDFs pdfs Create array o
  • 如何在Sequelize中设置查询超时?

    我想看看如何在 Sequelize 中设置查询的超时时间 我查看了 Sequelize 文档以获取一些信息 但我找不到我要找的东西 我发现的最接近的是 pools acquire 选项 但我不想设置传入连接的超时 而是设置正在进行的查询的超
  • 为 Node.js 客户端应用程序保留 Firebase 用户

    我正在使用 Firebase 构建 Node js 命令行界面 CLI 用于与后端进行身份验证 我想避免让用户每次运行命令时都输入密码 相反 我想实现一个 登录 流程 将凭证保留到文件系统 该凭证可用于后续的无密码身份验证 直到用户 注销
  • "message": "ENOENT: 没有这样的文件或目录,打开 'E:\\astrology\\utils\\uploads\\1600798534862qf.png'"

    正如标题所示 我得到error message ENOENT no such file or directory open E astrology utils uploads 1600798534862qf png 在我的项目中 即使在通过

随机推荐

  • (技术点)谈谈那些I/O方式----BIO、NIO、AIO

    一 事件分离器 要使用IO 就要说到事件分离器 在IO读写时 将IO请求与读写操作分离调配进行 需要用到事件分离器 事件分离器对象可以将来自事件源的IO时间分离出来 并分发到对应的read write时间处理器 Event Handler
  • React——组件的组合与交互

    组件的组合与交互 组合组件的构建 组合多个上述定义的 Box 组件 形成 Boxes 组件 并完成 属性 值的传递 lt 注 多个相同子组件时 每个子组件需要有唯一 key 值 gt 建立 Boxes 类组件 内含多个 Box组件 impo
  • post sql 数据库启动失败原因-记录

    打开服务 查看进程 若还有存活进程 杀掉相关post gres 相关的 重启服务 ok
  • windows软件或程序服务开机自启动的四种方式

    目录 方式一 1 脚本类型1 放入原脚本的快捷方式 脚本类型的 2 脚本类型2 自己写脚本 指向原服务路径 服务或软件类型的 方式二 添加任务计划方式 1 打开计算机管理 2 创建任务 添加任务名称和描述 根据需要随便填写 3 新建触发任务
  • 简单几何图形的识别与标记(opencv)

    一 实现目标 手绘简单几何图形 拍照后处理可识别并标记图形相应关键点 直线 识别并标记始末点 三角形 识别并标记三个角点 矩形 识别并标记四个角点 二 实现流程 通过Python与OpenCV进行编程 采用了获取图形角点数量的方式来识别图形
  • 3-1 客户评级

    某电商要对平台上客户进行评级 按客户的月平均消费情况进行评级 规则如下 输入年度的消费额 根据上表的月平均消费情况输出相应的 数 输入格式 输入年度消费额 输出格式 相应的 数 输入样例 在这里给出一组输入 例如 25000 输出样例 在这
  • nginx热备配置

    nginx热备是指主服务器发生宕机 或者其他原因导致服务不可用时启用备用服务器继续提供服务 下面来看看nginx是怎么配置的 upstream backend server 127 0 0 1 9001 主服务器 server 127 0
  • Ubuntu18.04 LTS下安装Clang

    Ubuntu18 04 LTS下安装Clang 一 在新系统后Ubuntu18 04 LTS下安装Clang会出现依赖缺失的问题 但一步步安装之后依旧是缺失依赖无法安装 正在读取软件包列表 完成 正在分析软件包的依赖关系树 正在读取状态信息
  • 【ML】介绍 PandasAI:生成式 AI Python 库

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • pm2查看、重启服务和日志

    简单科普 SSH 是一种网络协议 用于计算机之间的加密登录 PM2 是一个守护进程管理器 它将帮助您管理和保持应用程序在线 1 ssh远程登录 ssh hostAddress 通过输入密码 成功会登录到对应主机 如果失败会被拒绝 2 pm2
  • CSS基础学习--25 border(边框)进阶

    一 边框常见属性 border radius box shadow border image 属性 说明 CSS border image 设置所有边框图像的速记属性 3 border radius 一个用于设置所有四个边框 半径属性的速记
  • 15【背景 渐变色】

    26 背景 26 1 背景颜色 background color 属性定义了元素的背景颜色 background color 颜色值 一般情况下元素背景颜色默认值是 transparent 透明 我们也可以手动指定背景颜色为透明色 back
  • 如何做出领导满意的测试报告?Parasoft自动化软件测试数据管理了解一下

    大家在做自动化测试时是如何管理测试数据的呢 测试情况是如何实时把控的呢 对于领导来说 需要的是一份报告 而对于开发测试人员 这份数据报告的内容和形式就非常重要 这里为大家介绍一款专门针对代码级开发测试的数据管理平台 Parasoft DTP
  • HCIP笔记

    HCIP笔记 IERS OSPF协议基础 基于HCIA笔记 链路状态路由协议 OSPF的一些补充 RIP的不足 RIP是基于距离矢量算法的路由协议 RIP协议的组播地址为224 0 0 9 存在收敛速度慢 度量值不科学 扩展性差问题 互联网
  • 物联网毕设分享 火灾报警系统设计与实现

    文章目录 1 简介 2 绪论 2 1 课题背景与目的 3 烟雾传感器介绍 3 1 类型 3 2 MQ系列传感器介绍 3 3 模块介绍 4 系统设计 4 1 自诊断故障报警功能 4 2 烟雾浓度显示 4 3 烟雾报警功能 4 4 防止报警器误
  • 性能测试的方法及步骤

    一 测试方向 总体方向 性能效率测试是通过站在用户体验的角度 使用专业的负载生成设备 在性能模型的基础上验证系统是否能够达到用户提出的性能指标 是否符合用户文档中对系统设计时的性能关注点 在系统正常交互量及峰值交互量的情况下发现系统中存在的
  • Python基础:按位异或 ^ ,按位或

    前言 文的文字及图片来源于网络 仅供学习 交流使用 不具有任何商业用途 版权归原作者所有 如有问题请及时联系我们以作处理 PS 如有需要Python学习资料的小伙伴可以加点击下方链接自行获取http t cn A6Zvjdun 使用按位异或
  • JDK8 JVM参数与实际环境中的优化配置实践

    如何配置我们的JVM呢 首先我们需要知道JVM的参数有哪些 然后根据这些参数的意义去分析自己的程序的JVM需要的配置 可以事先做一些尝试 再逐步调优 这个调优也是一个过程 没有足够的经验而做到一步到位是一件很困难的事情 事情是一点点做的 不
  • 关于内存的编程题,对异常: 0xC0000005 的分析以及解决办法

    一 内存的思考题 请问运行Test函数会有什么样的结果 第一题 void GetMemory char p p char malloc 100 void Test void char str NULL GetMemory str strcp
  • Node.js到底是个啥?干什么用的?优缺点是什么?

    Nodejs简介 Node js是一个Javascript运行环境 runtime 是一个可以快速构建网络服务及应用的平台 是用Javascript语言构建的服务平台 可用于后端建立服务器 Node js与Javascript的区别 nod