初识nodejs

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),

所谓的长链接,就是我们每个用户都和服务器有一个链接,由于服务器不会主动向浏览器发送数据,当链接建立之后,不会立马断开,服务器端会一直在等待,当浏览器需要