
碰巧,最近有一个朋友问我这个问题,所以让我们简单地谈谈节点环境和我了解的浏览器之间的区别。大师们,请跳过它。
一、在全球环境中指向这一点
这指向全局节点,并且指向浏览器中的窗口,这就是为什么下划线在出现时定义根的原因;
1 var root = typeof self == 'object' && self.self === self && self || 2 typeof global == 'object' && global.global === global && global || 3 this;

此外,许多API(例如警报,文档,位置,历史记录等)都封装在浏览器窗口中。我们不能xxx();或window.xxx();在节点环境中。由于这些API是浏览器级别的程序包,因此它们不会存储在javascript中。当然,节点还提供许多特定于节点的API。
二、 js引擎
在浏览器中,不同的浏览器供应商提供不同的浏览器核心,并且浏览器依靠这些核心来解释我们编写的js。但是考虑到不同内核之间的微小差异,我们需要对应于兼容性。幸运的是,有一些出色的库可以帮助我们解决此问题,例如jquery,下划线等。
nodejs基于Chrome的JavaScript运行时,也就是说,它实际上封装了GoogleV8引擎(适用于Google Chrome浏览器)。 V8引擎执行Javascript的速度非常快,并且性能非常好。

NodeJS不提供简单的包装,然后提供API调用。如果真是这样,那么它将不会像现在这样流行。 Node优化了一些特殊的用例并提供了其他API,从而使V8在非浏览器环境中可以更好地运行。例如,在服务器环境中,处理二进制数据通常是必不可少的,但是Javascript不支持此功能。因此,V 8. Node添加了Buffer类以方便,高效地处理二进制数据。因此,Node不仅可以使用V8,还可以对其进行优化以使其在各种环境中更加强大。
js引擎是固定的,它也与神马兼容。
三、 DOM操作
在大多数情况下,浏览器中的js直接或间接(某些虚拟DOM库和框架)在操作DOM。因为浏览器中的代码主要在表示层中工作。但是节点是服务器端技术。没有首页,因此我们不会在node中操作DOM。

四、 I / O读写
与浏览器不同,我们需要像其他服务器端技术一样读写文件,而nodejs提供了更方便的组件。而且浏览器(为了确保兼容性)想要直接在页面中打开本地图片,这很麻烦(不要告诉我这并不容易,相对路径...尝试一下或找到一个库)二进制流,或者上传它并显示一个网络地址。否则,为什么人们要构建一个js库),而所有这些节点都由一个组件完成。
五、模块加载
JavaScript具有一项功能,即不提供包引用的本机API一次执行所有要加载的内容,这取决于您的关闭技巧。所使用的一切都在一起,没有分而治之,也没有逻辑和可重用性。如果页面很简单或者网站当然是我们,那么我们可以使用一些AMD CMD js库(例如requireJS和seaJS)来获取它。实际上,许多大型网站都这样做。

nodeJS中提供了用于CMD模块加载的API。如果您使用过seaJS,则应该快速入门。
Node还提供了像npm这样的软件包管理工具,可以更有效,更方便地管理我们的饮酒库
当然,浏览器端的ES6也有此补充,我相信将来会更好。 。
当然,节点和浏览器之间有很多区别,我会随时添加它们。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shumachanpin/article-313233-1.html
自创曲哦