做了一年多的VUE开发,其实每次用node.js并不知道是什么,只知道是可以管理包的工具,现在是有必要了解一下了。
1.什么是node.js
Node
是基于Chrome V8
引擎开发的能使JavaScript
在服务器端运行的运行时环境(runtime
environment
),简言之就是node.js是在谷哥V8引擎上JS的运行环境。
node.js不仅仅是一个JS的运行环境,而且它提供了多种可调用的API
,如读写文件、网络请求、系统信息等。另一方面,因为CPU
执行的是机器码,它还负责将JavaScript
代码解释成机器指令序列执行,这部分工作是由V8引擎
完成。
延伸知识点
JavaScript
是一款拥有「自动垃圾回收」功能的编程语言。
市面上具有这样功能的语言,一般都是拥有相对应的虚拟机的,像 Java
的JVM
,C#
的CLR
,PHP
的Zend
。
虚拟机一般实现了代码解析,内存的管理、布局、垃圾回收等功能。
不像C/C++
这种没有虚拟机的语言,它们需要手动管理内存。
C/C++
语言编译后的文件,是可以直接运行的
如今的 JavaScript
不仅仅是用在浏览器端了,也因为 NodeJS
的关系得以在服务器端运行。和浏览器端不同的地方在于服务器端对资源的敏感性是很高的。当业务规模大了,并发量上来了,一些很细小的问题会放大。这时候一些小小的内存泄漏,都会酿造灾难。
V8 概述
V8
作为一个 JavaScript
引擎,最初是服役于 Google Chrome
浏览器的。它随着 Chrome
的第一版发布而发布以及开源。现在它除了 Chrome
浏览器,已经有很多其他的使用者了。诸如 NodeJS
、MongoDB
、CouchDB
等。
V8
主要工作就是:「把 JavaScript
直译成机器码,然后运行」
但这中间,往往是一个复杂的过程,它需要处理很多的难题,诸如:
编译优化
内存管理
垃圾回收