nodejs特性

这几天学习nodejs,边学边做点笔记。今天有点累,就捡要点说了,

nodejs是什么

很多人最初接触的是jsp,php,.net这些服务器语言,对于JavaScript的印象最深应该是做为前端渲染的脚本语言运行在客户端的,其实JavaScript还可以运行在服务端,在早些年,Ryan Dahl开发了一个node平台这个平台就是做为JavaScript的运行环境的,为什么选择JavaScript,还为此开发了node平台,因为据统计JavaScript语言是使用者最多的语言,也就是很多人多少都会点JavaScript,这里多费了点口水,现在着重介绍nodejs特性

nodejs特性,单线程,非阻塞I/O,事件驱动

单线程:node就是不同于java,php,.net可以启动多个线程,nodejs是单线程,为什么是单线程,是为了提高服务器性能,因为多开一个线程就会多占用一个cpu资源,单线程减少了内存开销,操作系统的内存换页
非阻塞I/O:单线程在执行时不会因为I/O阻塞就等待I/O执行结束而是响应其他排队的事件等I/O执行结束,再把I/O返回的结果继续执行,也就是这个线程是一直在工作的
事件驱动:不管是新用户的请求,还是老用户的I/O完成,都将以事件方式加入事件环,等待调度
这个三个特性是统一的缺一不可

node没有web容器

node无法直接渲染静态页面,提供静态服务,node也没有根目录的概念,这就是node有别于Apache的地方,当你开启Apache服务,就可以在浏览器下访问根目录的HTML文件并在浏览器渲染出来,而在node不行,他必须通过路由程序指定文件才能渲染,当然这也造就node路由灵活安全的特点,你根据浏览器url在服务器的根据这个url可能就找不到这个文件了。

nodejs并不能挑战jsp,php老牌后台语言

尽管node有很多优势,但在很多大型网站,node都是做为一个小工具开发一些I/O操作频繁的模块,而不能支撑起全站的开发

nodejs适合的开发

善于I/O,不善于计算。因为Node.js最擅长的就是任务调度,如果你的业务有很多的CPU计算,实际上也相当于这个计算阻塞了这个单线程,就不适合Node开发。
当应用程序需要处理大量并发的I/O,而在向客户端发出响应之前,应用程序内部并不需要进行非常复杂的处理的时候,Node.js非常适合。Node.js也非常适合与web socket配合,开发长连接的实时交互应用程序。
比如:
● 用户表单收集
● 考试系统
● 聊天室
● 图文直播
● 提供JSON的API(为前台Angular使用)
目前有用到的比如,知乎的站内信(表单收集),百度的登录(表单收集),12306(全站都是nodejs开发,因为比较多的I/O操作),功夫熊猫,全站也是nodejs开发的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值