首页 > 解决方案 > Nodejs,如何在浏览器中查看jsdom

问题描述

如何在浏览器中查看 html?localhost:3000 上没有显示任何内容。

const jsdom = require("jsdom");
const { JSDOM } = jsdom;
const dom = new JSDOM(`<!DOCTYPE html><body><p id="main">My First JSDOM!</p></body>`,
  {
    url: "http://localhost:3000/",
    contentType: "text/html",
    pretendToBeVisual: true,
  }
);

标签: javascriptnode.jsjsdom

解决方案


从我收集到的评论中,您想在节点中操作 JSDOM 中的 DOM,然后(也许)编写一个 html 文件(或在响应中返回它)

对于那个用途serialize()

https://github.com/jsdom/jsdom#serializing-the-document-with-serialize

所以用你的例子:

const jsdom = require("jsdom");
const { JSDOM } = jsdom;
const dom = new JSDOM(`<!DOCTYPE html><body><p id="main">My First JSDOM!</p></body>`,
  {
    url: "http://localhost:3000/",
    contentType: "text/html",
    pretendToBeVisual: true,
  }
);

console.log(dom.serialize());

JSDo 将为您的所有 HTML 提供一个字符串。然后,您可以使用Express.js创建一个可以返回该 HTML 的服务器,或者使用该字符串将 HTML 文件写入磁盘。

const express = require('express');
const jsdom = require("jsdom");

const { JSDOM } = jsdom;
const dom = new JSDOM(`<!DOCTYPE html><body><p id="main">My First JSDOM!</p></body>`,
  {
    url: "http://localhost:3000/",
    contentType: "text/html",
    pretendToBeVisual: true,
  }
);

const app = express();

app.get('/', (req, res) => {
  res.send(dom.serialize());
});

app.listen(8080, () => {
  console.log('Example app listening at http://localhost:8080');
});

推荐阅读