欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

深入Node之初识

程序员文章站 2024-01-12 08:28:22
0前言 陆续的用Node已经一年多了,已经用node写了几个的项目,也该是总结node学习的过程了 1.Node是啥? Node.js是一使用JavaScript作为开发语言,运行在服务器端的Web服务器,也就是说是 JavaScript的服务端运行环境,这么说其实还不严谨。node除了实现了js的 ......

0前言

  陆续的用node已经一年多了,已经用node写了几个的项目,也该是总结node学习的过程了

 

1.node是啥?

  node.js是一使用javascript作为开发语言,运行在服务器端的web服务器,也就是说是 javascript的服务端运行环境,这么说其实还不严谨。node除了实现了js的运行环*,还用c++实现了内置的库

 

2.与浏览器端的js运行环境的区别

  javascript是一种解释型脚本语言,需要运行时环境来执行代码,而这个运行时环境就是google开发的v8引擎。不管是浏览器端的js还是还是node环境的js执行环境,都是基于v8引擎实现的。

下图可以看到node环境和浏览器环境的结构。可以看到,node中除了不需要页面解析引擎外,与浏览器的区别就在于中间层的实现

  深入Node之初识

3.node与其他编程语言相比有哪些特点

  3.1 单线程

    javascript在浏览器中运行时,js运行和页面渲染共用同一线程,也就是说js运行和页面渲染是相互阻塞的,这也证明了,在前端实践中需要把js放在最后执行的原因。

    单线程编程模型的好处是,不用担心内存状态的同步问题和程序上下文切换时的开销

  3.2异步i/o

    在浏览器编程中,需要和服务端打交道时,因为网络存在波动无法准确的预知响应时间,所以只能采用事件加回调的方式来实现,如ajax的请求的实现,只有当网络响应时才会执行注册的回调函数。如下图node的文件读取操作

深入Node之初识

 

  3.3跨平台

    node使用libuv库实现了跨平台运行的特性,libuv封装了多平的系统调用,抹平了系统之间的差异,在程序调用成抽象成统一的调用接口,使node程序能够在多平台实现相同的执行效果

4.node适合做什么工作

  i/o密集型应用,如常见的web应用,实时通讯服务器等。由于node使用js的事件+回调的机制来实现io访问,并且不会阻塞io调用

  中间层应用,作为网关代理层转发、代理、整合已有的服务和资源,快速实现产品上线、版本迭代,实现公司业务的“小步快跑”