node.js简要介绍

1.简单地说Node.js就是运行在服务器端的javascript。node.js是一个基于Chrome Javascript运行时建立的一个平台。是一个事件驱动I/O服务端JavaScript环境(由C++编写),基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。
2. Node.js工作原理

这里写图片描述

3. 它是一个Javascript运行环境(C++实现)、依赖于Chrome V8引擎进行代码解释、事件驱动、非阻塞I/O单进程,单线程、模块化编程、事件轮询(event loop)。
4. Node.js优点: 高并发,可以应付百万级并发 ;适合I/O密集型应用 缺点:不适合CPU密集型应用;CPU密集型应用给Node带来的挑战主要是:由于JavaScript单线程的原因,如果有长时间运行的计算(比如大循环),将会导致CPU时间片不能释放,使得后续I/O无法发起
5. 适合node.js的场景
(1)RESTful API
这是NodeJS最理想的应用场景,可以处理数万条连接,本身没有太多的逻辑,只需要请求API,组织数据进行返回即可。它本质上只是从某个数据库中查找一些值并将它们组成一个响应。由于响应是少量文本,入站请求也是少量的文本,因此流量不高,一台机器甚至也可以处理最繁忙的公司的API需求。
(2)统一Web应用的UI层
(3)大量Ajax请求的应用
例如个性化应用,每个用户看到的页面都不一样,缓存失效,需要在页面加载的时候发起Ajax请求,NodeJS能响应大量的并发请求。总而言之,NodeJS适合运用在高并发、I/O密集、少量业务逻辑的场景。
6. 应用实例 (花瓣网 淘宝开放平台API调用Nodejs版本实现 Cnode.org社区 网易开源Node.js游戏服务器框架pomepo NodeOS(操作系统))
7 Event Loop
Event Loop 是一个很重要的概念,指的是计算机系统的一种运行机制。

JavaScript语言就采用这种机制,来解决单线程运行带来的一些问题。这里写图片描述
本文参考C. Aaron Cois的《Understanding The Node.js Event Loop》

以JavaScript语言为例,它是一种单线程语言,所有任务都在一个线程上完成,即采用上面的第一种方法。一旦遇到大量任务或者遇到一个耗时的任务,网页就会出现”假死”,因为JavaScript停不下来,也就无法响应用户的行为。你也许会问,JavaScript为什么是单线程,难道不能实现为多线程吗?这跟历史有关系。JavaScript从诞生起就是单线程。原因大概是不想让浏览器变得太复杂,因为多线程需要共享资源、且有可能修改彼此的运行结果,对于一种网页脚本语言来说,这就太复杂了。后来就约定俗成,JavaScript为一种单线程语言。(Worker API可以实现多线程,但是JavaScript本身始终是单线程的。)
Event Loop是一个程序结构,用于等待和发送消息和事件。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值