设为首页 收藏本站
查看: 840|回复: 0

[经验分享] 初识nodejs

[复制链接]

尚未签到

发表于 2017-2-22 11:11:33 | 显示全部楼层 |阅读模式


node.js是什么东西?  现在流行一种说法叫web全栈工程师,讲的是一个web工程师要懂前后端,以及前端的各种牛逼技术,我觉得这个全栈工程师并不是说让你一个人去干一个团队的活,而是说你要有足够的技术思维以及技术掌控力,说白了就是你要懂的多,对于整天搞前端,和JavaScript打交道的我们来说,我们不妨来来看一个用JavaScript实现的后端平台,node.js.


  • nodejs是以chrome v8为运行环境的一个平台,它不是一门语言,而是一个平台,
  • nodejs致力于是构建速度快,稳定的网络程序更简单
  • 它具有事件驱动和非阻塞I/O的特色,使之轻量级并且高效率
  • 它非常适合在分布式设备运行数据密集型实时应用程序

使用chrome v8引擎?
  nodejs为什么要使用chrome引擎呢,据说是当时的创始人在开发nodejs的时候,想要创造出来一个高性能,异步IO,事件驱动的语言,因为JavaScript中是单线程执行的,所以没有同步IO,他便选定了JavaScript来作为基础实现的语言,同时由于谷歌的v8引擎是开源的,而且是运行JavaScript很快的引擎,便很机智的选择了chrome v8引擎来作为基础环境了,

nodejs的作用?
  讲到这里,我们大概的明白了nodejs是一个平台,是一个环境,它是由chrome v8引擎来做底层支持,使用JavaScript来做语言支持,大概意思就是我们之前使用JavaScript运行在浏览器端去处理dom,bom操作等等,现在JavaScript运行在服务器去处理数据的增删改查,接受请求,发送数据,查找修改文件,WHAT?这么吊?对的,现在使用JavaScript你就可以去做那些以前你觉得很牛逼的事情.
  当我们输入一个url去访问网站,服务器端接受到了这个请求之后,开始去查找请求的文件,然后去执行数据库查询,查询后将响应体返回给浏览器,这是一个大致的过程,那么在以前的服务器中,例如Apache,每一个请求事件它都会去创建一个新的进程去处理这个请求,
  之后,我们有了ajax,不再去进行整个页面的刷新了,而是进行局部的刷新,我们只需要去向服务器请求我们需要的那一部分数据就行了,这是一个巨大的进步.
  那我们可以再去设想一个场景,当我们在看朋友圈时,我么每一个用户的朋友圈都在实时的更新当中,按照我们以前的做法是给每一个用户都和数据库端有一个长链接(long polling),
  所谓的长链接,就是我们每个用户都和服务器有一个链接,由于服务器不会主动向浏览器发送数据,当链接建立之后,不会立马断开,服务器端会一直在等待,当浏览器需要它将更新的数据返回时它才会发送数据,例如你有一个朋友在微信上给你发了一条消息,这是服务器端就会向你的微信端发送一个消息,当浏览器端接受到了消息之后,会将当前链接断开,但是会再理解建立一个链接.
  我们以前的这种做法的弊端就是服务器开销太大,一直都有链接占用着资源,那么怎么解决呢?用nodejs就可以解决,nodejs有着非阻塞IO和事件驱动的特点,这些术语其实并不是那么的复杂,我们可以将非阻塞IO想象成一个事件循环,这个事件循环在不停的转啊转,有请求进来时,就将他装进这个事件循环,每一个事件都有一个回调,当我们产生一个请求时,不用等待,而是直接将该进程放进事件循环中,当数据库有信息返回时再触发回调函数.每个请求就像ajax执行时那样,不需要等待,
当我们的服务器请求结果返回了,事件循环就把结果传回用户的浏览器,接着继续跑,在这种方式下,我们的服务器就不会闲着了,(在多线程下有可能一些线程都没有什么用)并且从理论上讲,同一时刻的数据库查询数量,以及用户的请求数量就没有限制了,服务器只在用户那边有请求的时候才响应,这就是事件驱动.更多的可以理解为单核手机模拟四核手机的情况.

总结
  nodejs不是一门新的语言,他就是JavaScript的一个运行环境,JavaScript以前是在浏览器端跑,现在有了nodejs就可以在后端跑,就像汽车原本只能在公路上跑,现在你给他装了nodejs,它现在可以在水里跑了一样.那么这么抽象的说,我自己搞的也晕头转向的,对于刚趟入nodejs浑水的我.欢迎大家来一起交流!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-345667-1-1.html 上篇帖子: nodejs搭建本地http服务器 下篇帖子: 【NodeJS 学习笔记01】不学就老了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表