表面的区别
- 浏览器和node.js都可以看作是JS的运行平台,浏览器是JS在客户端的运行时环境,而node.js是JS在服务端的运行环境。
- JS运行在浏览器端,用于用户的交互效果。JS运行在node.js,用于服务器的操作。
- JS需要浏览器的JS引擎进行解析执行,但是不同浏览器的JS引擎不同,存在兼容性问题。而node.js是基于 chrome v8引擎的运行时环境,无兼容性问题。
- 对于ECMAScript语法来说,在node.js和浏览器中都能运行。node.js无法使用DOM和BOM的操作,浏览器无法执行node.js中的文件操作等功能。
- 浏览器下this指向window,nodejs中this指向global
使用的模块标准不同,nodejs使用的是CommonJs的模块标准,而浏览器使用的是ES的模块标准。所以nodejs中使用的是require()导入模块;浏览器中js使用的是import的方式导入。
底层核心区别
浏览器和Node 环境下,microtask 任务队列的执行时机不同
- Node端,microtask 在事件循环的各个阶段之间执行
- 浏览器端,microtask 在事件循环的 macrotask 执行完之后执行
浏览器与Node的事件循环(Event Loop)有何区别?_高先生的猫的博客-CSDN博客_浏览器事件循环和node事件循环
你不知道的谷歌V8引擎的前世今生 Chrome V8 与 Node.js - 知乎
Chrome V8 简称 V8,是由谷歌开源的一个高性能 JavaScript 引擎。该引擎采用 C++ 编写,Google Chrome 浏览器用的就是这个引擎。V8 可以单独运行,也可以嵌入 C++ 应用当中。
该研发小组从 2006 年开始研发 V8,原因是当年市面上的各种 JavaScript 引擎效率都比较低下。在 Lars Bak 等人的贡献下,JavaScript 引擎添加了新的一员—— Chrome V8,并且效率非常高。
关于Node和浏览器的不同_~小仙女~的博客-CSDN博客_node和浏览器的区别
Chrome V8 与 Node.js - 知乎
五、JS单线程运行原理与多线程_二旬、的博客-CSDN博客_js单线程和多线程的区别
终极链接
浏览器与Node的事件循环(Event Loop)有何区别?_高先生的猫的博客-CSDN博客_浏览器事件循环和node事件循环