Javascript 为什么';t Node.js是否有本机DOM?

Javascript 为什么';t Node.js是否有本机DOM?,javascript,node.js,dom,v8,headless-browser,Javascript,Node.js,Dom,V8,Headless Browser,当我发现Node.js是使用V8 JavaScript引擎构建的时,我想: 很好,网页抓取将更容易作为网页 将像在浏览器中一样渲染,并使用 支持XPath和任何AJAX调用的“本机”DOM 页面已执行 当它使用与Chrome相同的JavaScript引擎时,为什么没有本地DOM 为什么它没有在检索到的页面中运行JavaScript的模式 我对JavaScript引擎和web浏览器中的引擎有什么不理解 非常感谢 DOM就是DOM,JavaScript实现只是一个单独的实体。DOM表示web浏览器向

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

很好,网页抓取将更容易作为网页 将像在浏览器中一样渲染,并使用 支持XPath和任何AJAX调用的“本机”DOM 页面已执行

  • 当它使用与Chrome相同的JavaScript引擎时,为什么没有本地DOM
  • 为什么它没有在检索到的页面中运行JavaScript的模式
  • 我对JavaScript引擎和web浏览器中的引擎有什么不理解

  • 非常感谢

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

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

    我在基于Java的web服务器中使用了旧的基于Rhino Java的JavaScript实现。该环境与任何DOM都没有任何关系。它是我自己的应用程序,负责用工具填充全局对象,以完成我需要它能够完成的任务,而它不是DOM

    请注意,有些项目类似于您是否希望在节点项目中使用虚拟DOM。由于DOM作为服务器端平台的本质,它是一种Node可以不使用的工具,并且对于各种各样的服务器应用程序来说仍然非常有意义。这并不是说DOM对某些人来说可能没有用处,但它与进程控制、I/O、网络、数据库互操作等服务不同


    可能有一些“官方的”答案来回答“为什么?”,但它基本上是维护节点(现在是节点基础)的那些人的事务。如果某个无畏的开发人员决定Node在默认情况下应该附带一组支持虚拟DOM的模块,并且成功地工作并实现了这一点,那么Node将拥有一个DOM。

    Node.js用于服务器端编程。服务器中没有要呈现的DOM。

    Javascript!=浏览器Javascript作为一种语言与浏览器无关;node.js只是针对服务器而不是浏览器的Javascript实现。因此没有DOM。

    1)它有一个DocumentOobjectModel意味着什么?没有可代表的文件

    2) 大多数情况下,您没有检索页面。可以,但大多数节点应用程序可能不会


    3) 没有文档和浏览器,Javascript只是另一种编程语言。因此,您可能会问为什么在C#或Java中没有DOM,您似乎有一个有缺陷的假设,即V8和DOM是密不可分的,但事实并非如此。DOM实际上由Webkit处理,V8不处理DOM,它处理对DOM的Javascript调用。不要因此而气馁,Node.js已经在实时服务器市场上开辟了一个重要的利基市场,但不要让任何人告诉你这只是为了服务器。Node使得几乎可以用JavaScript构建任何东西


    有可能做到你所说的。例如,如果您真的需要访问DOM,那么有一个非常好的库,还有一些非常好的刮取库可以利用这些库,比如。

    p.S:在阅读这个问题时,我还想知道(node.js构建于此之上)是否有DOM

    为什么当它使用与Chrome相同的JS引擎时,它没有一个本机引擎 多姆

    但我搜索了谷歌,找到了如下内容:

    JavaScript最常用于应用程序中的客户端脚本 浏览器,用于操作文档对象模型(DOM)对象 例如但是,DOM通常不是由 JavaScript引擎,而不是浏览器。同样的道理也适用于中国 V8 Google Chrome提供了DOM。然而,V8确实提供了所有 ECMA中指定的数据类型、运算符、对象和函数 标准

    node.js使用
    V8
    而不是
    Google Chrome

    同样,为什么它没有在检索到的页面中运行JS的模式

    我也认为我们真的没有那么需要它。Ryan Dahl作为一个人(单个程序员)创建了node.js。也许现在他(他的团队)会开发这个,但我已经对他产生的大量代码感到非常惊讶(疯狂)。他想制作一个无阻塞的简单/高效的库,我认为他在这方面做得非常好

    但是,再一次,另一个开发人员创建了一个非常好的模块,并且(今天)在

    我对Javascript引擎与中的引擎有什么不了解 网络浏览器?:)


    这些都是不同的事情,希望从上面的引文中可以清楚地看到。

    如果您将DOM理解为“可从我的脚本立即访问的链接对象”,那么答案就是“但它与web文档脚本中可用的对象集非常不同”。主要原因是节点是“V8的事件I/O”,而不是“V8的HTML树对象”。node.js选择不将其包含在其标准库中。对于任何功能,在全面性、可伸缩性和可维护性之间都不可避免地存在着权衡


    这并不意味着它没有潜在的用处。NodeJS至少有一个实现(在其他常见的js实现中)。

    人们似乎已经回答了“为什么”,但没有回答“如何”。如何在web浏览器中公开文档对象(因此是DOM,文档对象模型)的一个快速答案。在windows上,此对象被称为。你可以参考一下