当我发现那Node.js was built using the V8 JavaScript engine个时,我想:

很好,网页抓取将更容易作为网页

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

非常感谢!

推荐答案

DOM就是DOM,JavaScript实现只是一个单独的实体.DOM表示web浏览器向JavaScript环境公开的一组功能.不过,通过any的全局运行时工具不会expose 任何特定的JavaScript对象.

什么 node .js是web浏览器的一个独立JavaScript环境completely independent.web浏览器和JavaScript之间没有内在联系;DOM是JavaScript语言、规范或任何东西的一部分.

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

请注意,如果您希望在 node 项目中使用虚拟DOM,则有类似于jsdom的项目.由于其作为服务器端平台的本质,DOM是一种Node可以不使用的工具,并且对于各种各样的服务器应用程序仍然非常有意义.这并不是说DOM对某些人可能没有用处,但它只是不属于流程控制、I/O、网络、数据库互操作等服务的范畴.

"为什么?"这个问题可能有一些"官方"答案在那里,但它基本上是维护 node (现在是 node 基础)的那些人的事务.如果某个勇敢的开发人员决定Node在默认情况下应该附带一组支持虚拟DOM的模块,并且成功地工作并实现了这一点,那么Node will就拥有了一个DOM.

Node.js相关问答推荐

如何处理EPIPE时,使用axios并期待413响应?

NPM:一般的npm二进制依赖可以静态构建吗?

Puppeteer 的 BrowserFetcher 发生了什么?

即使卷已设置,Docker Nodemon 也不会热重载

在 NodeJS 中使用 post 时出现错误 500TypeError: 无法解构 'req.body' 的属性 'name',因为它未定义

在mongoose虚拟属性中处理异步操作

处理嵌套元素时,使用xml2js库解析XML时发生错误

如何在 JavaScript 中显示多维数组中使用的一维数组的变量名?

bcrypt.compare 每次都返回 false

Indexeddb 获取所有不同于特定值的记录

如何修改这个flake.nix,这样我就不用每次加载环境都加载nix包了

nvm / node / npm: node 12 的 npm 比 node 14 的更新?

多个 Axios 请求合并

我怎样才能让`git`失败而不是要求提供凭据

在express js模型中将js转换为Typescript 时Typescript 错误

为什么在调用数据库调用时我的参数没有定义?

如何在 node 调试器中禁用第一行中断

如何从命令行在 Node.js 上运行 Jasmine 测试

要求('babel/register')不起作用

node.js 中的意外保留字导入