当我发现 Node.js是使用V8 JavaScript引擎构建的时 ,我想到:
太好了,因为网页将像在浏览器中一样呈现,并且具有支持XPath的“本机” DOM和在执行的页面上进行的任何AJAX调用,因此网页抓取将更加容易。
非常感谢!
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。