如何理解Node.js和JavaScript的关系

一、Javascript的引擎

浏览器一般有两个引擎,一个是Html引擎,一个是脚本引擎。

JavaScript是一种脚本语言,最初用于浏览器的动态显示,方便操作页面数据和内容。但实际上,它也可以在浏览器外运行(如服务器端),就像C、C++、Java语言一样,因此,它是一种开发语言。

我们知道,Java的运行环境是Jvm,而JavaScript的运行环境是JavaScript引擎。

但JavaScript没有标准的运行环境(或称为引擎),我们所熟知的浏览器都有各自的脚本引擎,如:Mozilla的引擎叫TraceMonkey;Safari的引擎叫Squirrelfish Extreme,Google Chrome的引擎目前是V8(可能是最新版本,但我也不清楚,因为2009年Node.js诞生时,就用的是V8引擎)

总结:JavaScript运行在脚本引擎下。

二、Node.js是什么

后来由于Google Chrome V8引擎的出现,大大提高了JavaScript的运行效率(几乎与本地代码有一样的执行效率),使人们看到了脚本语言的强大。基于这个原因,CommonJs诞生,并试图制定一套JavaScript规范,使其可以应用在普通应用程序。CommonJs的终极目标是制定一套像C++类库一样的规范,使各类应用可以像调用C++标准库一样,调用JavaScript标准库。

而Node.js就是实现了部分CommonJs规范的一个服务器端应用(非浏览器应用)。

因此很重要的一个概念就是,Node.js是一个应用,而不是一个JavaScript运行环境。它像浏览器一样,可以解析执行JavaScript脚本,但不是运行在浏览器环境下,而是运行在操作系统环境下。或者说它和浏览器是一个并列的性质,都是操作系统下的一个应用。

Node.js的一个目标是成为像Apache一样的应用服务器,并要比它的性能更高。

总结:Node.js是一个Web应用服务器。

三、Node.js与Javascript的关系

Node.js与浏览器端的Javascript(尤其是像现在的Vue.js等前端开发工具),没有一毛钱的关系。

总结:Node.js与浏览器端的JavaScript没有任何关系。

 

以上很多概念来自于《Node.js开发指南》一书,但不是原文摘抄,是以自己的理解和便于初学者理解做的解释。本文主要用于理解Node.js是做什么的,作为自己的一个学习记录,如有不同见解,欢迎大家留言。

posted @ 2022-03-26 12:49  三晋一枝发  阅读(719)  评论(0编辑  收藏  举报