一尘不染

为什么Node.js没有本地DOM?

node.js

当我发现 Node.js是使用V8 JavaScript引擎构建的时 ,我想到:

太好了,因为网页将像在浏览器中一样呈现,并且具有支持XPath的“本机” DOM和在执行的页面上进行的任何AJAX调用,因此网页抓取将更加容易。

  1. 当它使用与Chrome相同的JavaScript引擎时,为什么没有本地DOM?
  2. 为什么它没有在已检索页面中运行JavaScript的模式?
  3. 我对JavaScript引擎与Web浏览器中的引擎不了解什么?

非常感谢!


阅读 247

收藏
2020-07-07

共1个答案

一尘不染

DOM是DOM,而JavaScript实现只是一个单独的实体。DOM表示Web浏览器向JavaScript环境公开的一组功能。但是,不 要求
任何特定的JavaScript运行时都具有通过全局对象公开的 任何 功能。

Node.js是一个 完全独立 于Web浏览器的 独立 JavaScript环境。Web浏览器和JavaScript之间没有内在的联系。DOM
不是 JavaScript语言或规范或任何内容的一部分。

我在基于Java的Web服务器中使用了基于Rhino
Java的旧JavaScript实现。该环境也与任何DOM都不相关。这是我自己的应用程序,负责用实现我所需的功能来填充全局对象,而不是DOM。

请注意,如果要在Node项目中使用虚拟DOM,则可以使用jsdom之类的项目。由于其作为服务器端平台的本质,DOM是Node可以做到的一种功能,并且对于多种服务器应用程序仍然是十分有意义的。这并不是说DOM对某些人可能没有用,但它与流程控制,I
/ O,网络,数据库互操作等不属于同一类服务。

对于“为什么”的问题,可能会有一些“官方”答案。在那里,但基本上只是维护Node的人员(现在是Node
Foundation)的业务。如果那里有一些勇敢的开发人员决定默认情况下,Node应该附带一组模块来支持虚拟DOM,并且成功地工作并且能够实现,那么Node
拥有一个DOM。

2020-07-07