当我发现 Node.js 是使用 V8 JavaScript 引擎构建的时,我想:
Great, web scraping will be easier as the page will be rendered like in the browser, with a "native" DOM supporting XPath and any AJAX calls on the page executed.
- 当它使用与 Chrome 相同的 JavaScript 引擎时,为什么没有原生 DOM?
- 为什么它没有在检索到的页面中运行 JavaScript 的模式?
- 关于 JavaScript 引擎与 Web 浏览器中的引擎,我有哪些不了解的地方?
非常感谢!
最佳答案
DOM 就是 DOM,JavaScript 实现只是一个单独的实体。 DOM 表示 Web 浏览器向 JavaScript 环境公开的一组工具。没有要求,但是任何特定的 JavaScript 运行时都将具有通过全局对象公开的任何设施。
Node.js 是一个独立的 JavaScript 环境,完全独立于网络浏览器。 Web 浏览器和 JavaScript 之间没有内在联系; DOM 不是 JavaScript 语言或规范或任何东西的一部分。
我在基于 Java 的 Web 服务器中使用旧的 Rhino 基于 Java 的 JavaScript 实现。该环境也与任何 DOM 无关。这是我自己的应用程序,它负责使用工具填充全局对象以执行我需要它能够执行的操作,它不是 DOM。
请注意,有些项目像 jsdom如果您想在 Node 项目中使用虚拟 DOM。由于其作为服务器端平台的本质,DOM 是 Node 可以不用的工具,并且对于各种服务器应用程序仍然非常有意义。这并不是说 DOM 可能对某些人没有用处,只是它与进程控制、I/O、网络、数据库互操作等属于不同的服务类别。
对于“为什么”这个问题,可能会有一些“官方”回答。在那里,但它基本上只是维护 Node 的人(现在的 Node 基金会)的业务。如果某个勇敢的开发人员决定 Node 应该默认附带一组模块来支持虚拟 DOM,并且成功地工作和工作并实现了这一点,那么 Node 将拥有一个 DOM。 p>
关于javascript - 为什么 Node.js 没有原生 DOM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6657216/