如何使用Node js操作DOM?

问题描述

我是javascript和Node.js的新手,但我试图弄清楚Node中是否有具有相同功能的document.getElementById()替代品。如果无法在Node中完成,则可以创建一个纯js文件来操作DOM并创建一个单独的Node文件。有关其他信息,我想做的是将csv行转换为json对象,然后用新信息更新网页,这就是为什么我要使用document.getElementById()。

解决方法

document.getElementById()是浏览器中存在的功能。 nodejs中没有此类功能。

有可能获得一个第三方模块,该模块将解析HTML网页,创建DOM,然后允许您以编程方式访问DOM来查看网页中的内容。 CheerioPuppeteer是两个这样的第三方模块,每个模块具有不同的功能级别。 Puppeteer实际上使用Chromium浏览器引擎,甚至可以在页面中运行Javascript并生成屏幕截图。 Cheerio解析HTML,并让您访问它创建的内容(无需运行Javascript)。

听起来好像您对网页的工作方式有些困惑。最终用户计算机上运行的浏览器将加载网页。页面加载后,此时服务器的工作完成。该网页仅存在于用户计算机的浏览器中。服务器无法直接直接更改该网页。

要更改该网页(不重新加载该网页),您必须在该网页中具有支持的Javascript代码(在用户浏览器中运行)。例如,您可以让Javascript从网页进行Ajax调用,以从服务器请求某些数据。当服务器收到该请求时,它可以生成数据并将JSON返回给浏览器。然后,浏览器中的Javascript将接收该JSON,将其解析为Javascript对象,然后使用DOM根据接收到的数据将新对象插入现有网页。

请注意,浏览器中现有网页的所有更改均由用户浏览器中网页中运行的Javascript进行,而不是由服务器直接进行。服务器可以提供数据,但不能直接更改用户的网页本身。当然,用户可以请求更新页面,浏览器将请求整个页面的新版本,然后服务器可以提供其中包含不同数据的页面,但这将涉及重新加载整个页面。

也存在用于nodejs的模板引擎,以便在服务器生成网页时,模板引擎可以帮助您为该网页创建一组包含动态数据的HTML。这不会动态更改已经位于正在显示的浏览器中的网页。相反,它可以帮助您从头开始生成网页,该网页在首次下载时就将动态数据合并到网页中。在nodejs中可与Express一起使用的模板引擎的示例包括Pug,EJS,Nunjucks,把手和许多others

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...