位置: 编程技术 - 正文

Node.js简单入门前传(node-js)

编辑:rootadmin

推荐整理分享Node.js简单入门前传(node-js),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:node.js 入门,node.js快速入门,node.js 入门,node.js入门教程,node.js快速入门,node-js,node.js 入门,node.js入门教程,内容如对您有帮助,希望把文章链接给更多的朋友!

1.什么是NodeJS

简单的说 Node.js 就是运行在服务端的 JavaScript。

Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。

Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎(Google的Chrome浏览器使用的JavaScript执行环境),

V8引擎执行Javascript的速度非常快,性能非常好。

2.为什么选择NodeJS

如果你是一个前端程序员,你不懂得像PHP、Python或Ruby等动态编程语言,然后你想创建自己的服务,那么Node.js是一个非常好的选择。

Node.js 是运行在服务端的 JavaScript,如果你熟悉Javascript,那么你将会很容易的学会Node.js。

当然,如果你是后端程序员,想部署一些高性能的服务,那么学习Node.js也是一个非常好的选择。

3.NodeJS的特点

我们先来看看NodeJS官网上的介绍:

  Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.

  其特点为:

  1. 它是一个Javascript运行环境

  2. 依赖于Chrome V8引擎进行代码解释

  3. 事件驱动

  4. 非阻塞I/O

  5. 轻量、可伸缩,适于实时数据交互应用

  6. 单进程,单线程

异步、事件驱动模型

我们同样是要发起请求,等待服务器端响应;但是与银行例子不同的是,这次我们点完餐后拿到了一个号码,

  拿到号码,我们往往会在位置上等待,而在我们后面的请求会继续得到处理,同样是拿了一个号码然后到一旁等待,接待员能一直进行处理。

  等到饭菜做号了,会喊号码,我们拿到了自己的饭菜,进行后续的处理(吃饭)

  这个喊号码的动作在NodeJS中叫做回调(Callback),能在事件(烧菜,I/O)处理完成后继续执行后面的逻辑(吃饭),

  这体现了NodeJS的显著特点,异步机制、事件驱动

  整个过程没有阻塞新用户的连接(点餐),也不需要维护已经点餐的用户与厨师的连接

Node.Js使用事件驱动模型,当web server接收到请求,就把它关闭然后进行处理,然后去服务下一个web请求。当这个请求完成,它被放回处理队列,当到达队列开头,这个结果被返回给用户。这个模型非常高效可扩展性非常强,因为webserver一直接受请求而不等待任何读写操作。(这也被称之为非阻塞式IO或者事件驱动IO)

  基于这样的机制,理论上陆续有用户请求连接,NodeJS都可以进行响应,因此NodeJS能支持比Java、PHP程序更高的并发量

  虽然维护事件队列也需要成本,再由于NodeJS是单线程,事件队列越长,得到响应的时间就越长,并发量上去还是会力不从心

  总结一下NodeJS是怎么解决并发连接这个问题的:

Node.js简单入门前传(node-js)

  更改连接到服务器的方式,每个连接发射(emit)一个在NodeJS引擎进程中运行的事件(Event),放进事件队列当中,

  而不是为每个连接生成一个新的OS线程(并为其分配一些配套内存)

I/O阻塞

NodeJS解决的另外一个问题是I/O阻塞,看看这样的业务场景:需要从多个数据源拉取数据,然后进行处理

  (1)串行获取数据,这是我们一般的解决方案,以PHP为例

  假如获取profile和timeline操作各需要1S,那么串行获取就需要2S

  (2)NodeJS非阻塞I/O,发射/监听事件来控制执行过程

  NodeJS遇到I/O事件会创建一个线程去执行,然后主线程会继续往下执行的,

  因此,拿profile的动作触发一个I/O事件,马上就会执行拿timeline的动作,

  两个动作并行执行,假如各需要1S,那么总的时间也就是1S

  它们的I/O操作执行完成后,发射一个事件,profile和timeline,

  事件代理接收后继续往下执行后面的逻辑,这就是NodeJS非阻塞I/O的特点

  总结一下:

  Java、PHP也有办法实现并行请求(子线程),但NodeJS通过回调函数(Callback)和异步机制会做得很自然

4. NodeJS的优缺点

  优点:

  1. 高并发(最重要的优点)

  2. 适合I/O密集型应用

  缺点:

  1. 不适合CPU密集型应用;CPU密集型应用给Node带来的挑战主要是:由于JavaScript单线程的原因,如果有长时间运行的计算(比如大循环),将会导致CPU时间片不能释放,使得后续I/O无法发起;

    解决方案:分解大型运算任务为多个小任务,使得运算能够适时释放,不阻塞I/O调用的发起;

  2. 只支持单核CPU,不能充分利用CPU

  3. 可靠性低,一旦代码某个环节崩溃,整个系统都崩溃

    原因:单进程,单线程

    解决方案:(1)Nnigx反向代理,负载均衡,开多个进程,绑定多个端口;

         (2)开多个进程监听同一个端口,使用cluster模块;

  4. 开源组件库质量参差不齐,更新快,向下不兼容

  5. Debug不方便,错误没有stack trace

总结

以上所述是小编给大家介绍的Node.js简单入门前传,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对积木网网站的支持!

基于node.js之调试器详解 1.在命令行窗口中,可以使用"nodedebug"命令来启用调试器,代码如下:nodedebug需要被执行的脚本文件名接下来根据一个实例进行学习调试过程:编写app.js

node中koa中间件机制详解 koakoa是由express原班人马打造的一个更小、更富有表现力、更健壮的web框架。在我眼中,koa的确是比express轻量的多,koa给我的感觉更像是一个中间件框架

React+react-dropzone+node.js实现图片上传的示例代码 本文将会用typescript+react+react-dropzone+express.js实现前后端上传图片。当然是用typescript需要提前下载相应的模块,在这里就不依依介绍了。第一步,配置tsco

标签: node-js

本文链接地址:https://www.jiuchutong.com/biancheng/380938.html 转载请保留说明!

上一篇:使用Nodejs连接mongodb数据库的实现代码(使用nodejs连接openai超时)

下一篇:基于node.js之调试器详解(node.js gui)

  • 出口退税率怎么算
  • 小额零星开支税前扣除
  • 专项附加扣除可以随时填报吗
  • 企业股东分红可以不按比例分吗
  • 有两处收入的怎么报个税汇算清缴
  • 公司废品处理一定要入账吗
  • 往来账项询证函一定要回复吗
  • 应收账款包含应付款吗
  • 飞机票退票费如何处理账务
  • 居民企业核定征收企业所得税的情形有哪些
  • 劳务派遣用工的岗位只能在哪些工作岗位上实施
  • 增值税申报表更正情况说明怎么写
  • 有发票和银行单据的区别
  • 增值税调整后开具发票
  • 代付电费开具发票账务处理
  • 账本印花税如何申报缴纳
  • 金税三期的变化
  • 出口退免税收汇相关业务
  • 出口企业应交税费是负数怎么解释
  • 公司开出的发票
  • 简易征收是优惠政策吗
  • 1697509557
  • 增值税专用发票查询系统官方网站
  • 电脑系统权限管理在哪里
  • php缓存优化
  • PHP:Memcached::isPristine()的用法_Memcached类
  • 主营业务利润率多少合适
  • 赔偿金和违约金有什么区别
  • 取得企业债券利息为什么要交个人所得税
  • 向银行贷款资金成本率计算公式是什么
  • 汉字转拚音
  • 生产车间生产人员福利费
  • 对方开具红字发票,我方怎么查询
  • 产成品核算的内容
  • 法人借钱给公司,公司可以直接转给法人吗
  • 织梦栏目描述调用
  • 帝国cms整合Elasticsearch
  • 企业出租无形资产使用权取得的收入应计入
  • 已经抵扣的进项税额转出会计分录
  • 信息技术服务费的税率是多少
  • 运输公司内账会计每天需要做什么
  • 其他应付款如何平账
  • 收到的进项发票在哪里认证
  • 可供出售金融资产公允价值变动
  • 零余额账户用款额度年末转入哪个科目
  • 资本公积的来源和用途
  • 售后回租的实际利率怎么计算
  • 土地使用税和房产税是一起的吗
  • 小规模纳税人从三万到十万
  • 科目余额表没有本年累计怎么办
  • 融资租赁固定资产不属于筹资活动
  • 公司购买电缆线怎么做账
  • 供货商做产品配送怎么做
  • Mysql row number()排序函数的用法和注意
  • 升级完鸿蒙系统5G咋没有了
  • 为什么windows手机失败了
  • 注册表c盘桌面路径改为d盘
  • windows运行不了怎么办
  • cortanawin10在哪
  • win7网络问题
  • win7旗舰版系统激活密钥
  • cocos2dx schedule
  • jquery操作html代码
  • android属性大全
  • 怎么做小地图
  • xcode配置opencv
  • sed基本用法
  • jquery .form
  • JS中call/apply、arguments、undefined/null方法详解
  • 使用mvc模式设计的web应用程序
  • ajax实现无刷新
  • android 系统app开机自启动设置
  • 浙江省网上税务局app下载
  • 怎么使用企业级app
  • 转让土地的土地增值税
  • 环保信用评价等级分级情况
  • 蜀山区税务局网站首页
  • 软件著作权可以转让公司吗
  • 湖南地税局客服电话号码
  • 商品房增值税如何算
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设