如何理解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是做什么的,作为自己的一个学习记录,如有不同见解,欢迎大家留言。
如何理解Node.js和JavaScript的关系的更多相关文章
- node.js和JavaScript的关系
node.js是一个基于 Chrome V8 引擎的 JavaScript 运行时环境. 一.类比JavaScript和java JavaScript java V8 JVM node.js JRE ...
- 深入理解Node.js中的垃圾回收和内存泄漏的捕获
深入理解Node.js中的垃圾回收和内存泄漏的捕获 文章来自:http://wwsun.github.io/posts/understanding-nodejs-gc.html Jan 5, 2016 ...
- 了不起的Node.js: 将JavaScript进行到底(Web开发首选,实时,跨多服务器,高并发)
了不起的Node.js: 将JavaScript进行到底(Web开发首选,实时,跨多服务器,高并发) Guillermo Rauch 编 赵静 译 ISBN 978-7-121-21769-2 2 ...
- 理解Node.js的事件轮询
前言 总括 : 原文地址:理解Node.js的事件轮询 Node小应用:Node-sample 智者阅读群书,亦阅历人生 正文 Node.js的两个基本概念 Node.js的第一个基本概念就是I/O操 ...
- 方便大家学习的Node.js教程(一):理解Node.js
理解Node.js 为了理解Node.js是如何工作的,首先你需要理解一些使得Javascript适用于服务器端开发的关键特性.Javascript是一门简单而又灵活的语言,这种灵活性让它能够经受住时 ...
- 深入理解 Node.js 进程与线程
原文链接: https://mp.weixin.qq.com/s?__biz=MzAxODE2MjM1MA==&mid=2651557398&idx=1&sn=1fb991da ...
- Node.js: What is the best "full stack web framework" (with scaffolding, MVC, ORM, etc.) based on Node.js / server-side JavaScript? - Quora
Node.js: What is the best "full stack web framework" (with scaffolding, MVC, ORM, etc.) ba ...
- 深入理解node.js异步编程:基础篇
###[本文是基础内容,大神请绕道,才疏学浅,难免纰漏,请各位轻喷] ##1. 概述 目前开源社区最火热的技术当属Node.js莫属了,作为使用Javascript为主要开发语言的服务器端编程技术和平 ...
- 深入理解Node.js基于事件驱动的回调
回调和异步调用的关系 首先明确一点,回调并非是异步调用,回调是一种解决异步函数执行结果的处理方法.在异步调用,如果我们希望将执行的结果返回并且处理时,可以通过回调的方法解决.为了能够更好的区分回调和异 ...
随机推荐
- Solution -「ARC 125E」Snack
\(\mathcal{Description}\) Link. 把 \(n\) 种零食分给 \(m\) 个人,第 \(i\) 种零食有 \(a_i\) 个:第 \(i\) 个人得到同种零食数量 ...
- Solution -「多校联训」种蘑菇
\(\mathcal{Description}\) Link. 给定一棵含有 \(n\) 个结点的树,设 \(S\) 为其中的非空联通子集,求 \[\sum_{S}(\gcd_{u\in S} ...
- 使用IWebBrowser2操控浏览器页面测试(IE)
测试一下在IE浏览器界面中插入代码测试,采用寻找窗口的方式获取Internet Explorer_Server句柄. 写的时候参考了很多网上的资料,有些地方不大适用就稍微修改了一下. Send ...
- 通过Dapr实现一个简单的基于.net的微服务电商系统(十八)——服务保护之多级缓存
很久没有更新dapr系列了.今天带来的是一个小的组件集成,通过多级缓存框架来实现对服务的缓存保护,依旧是一个简易的演示以及对其设计原理思路的讲解,欢迎大家转发留言和star 目录:一.通过Dapr实现 ...
- ssh 连接出现expecting SSH2_MSG_KEX_ECDH_REPLY失败解决
问题描述: ssh连接通过ipsec后连接卡住:ssh -vvv显示: echo "1420" > /sys/class/net/eth0/mtu #把mtu值设置一下默认是 ...
- 在windev中实现BS架构级的灵活排版
windev是CS架构,但却能够实现BS架构级的灵活排版.玩过CS架构的老铁们,感受应会都如我,如获新生!因为苦于没有一张好画皮久矣!在windev中,要实现灵活,专业,自适应和非常丰富的排版,可以关 ...
- 项目报错:/uploads: Read-only file system(解决办法)
项目报错:/uploads: Read-only file system(解决办法) 本来以为是service层没加注解,翻到最后才发现问题 原因是项目根目录没有对应的文件夹,在项目根目录创建uplo ...
- 【C# 异常处理】调试器 管理异常
装载自:https://docs.microsoft.com/zh-cn/visualstudio/debugger/managing-exceptions-with-the-debugger?vie ...
- Qt:QFile、QIODevice
QFile 0.说明 QFile是读写文件的类,这里的文件包括文本文件.二进制文件.资源文件. 通常情况下,文件读写使用QFile.QTextStream.QDataStream就够了. file n ...
- omnet++:官方文档翻译总结(五)
Part 6 - 用IDE将结果可视化 学习翻译自:Visualizing the Results - OMNeT++ Technical Articles ①将输出的数值和向量数据可视化(用tict ...