是否可以漂亮地打印JSDOM文档?

问题描述 投票:0回答:1

所以我正在在NodeJS应用程序中动态构建HTML输出文件。在开发过程中,我希望此文件打印精美,以便可以更好地检查输出。这是到目前为止我得到的,这是非常裸露的骨头,因为我仍在弄清楚我要如何执行此操作:

const { JSDOM } = require('jsdom');

const dom = new JSDOM('<!DOCTYPE html><head /><body /></html>');
const document = dom.window.document;

const css = `
    .row {
        display: flex;
        flex-direction: row;
    }

    .col {
        display: flex;
        flex-direction: column;
    }
`;

const createElement = ({ tagName, textContent }) => {
    const elem = document.createElement(tagName);
    elem.textContent = textContent;
    return elem;
};

document.head.appendChild(createElement({ 
    tagName: 'title', 
    textContent: 'Shopping List'
}));
document.head.appendChild(createElement({
    tagName: 'style',
    textContent: css
}));

console.log(dom.serialize()); // TODO delete this

如您所见,我正在记录dom.serialize()的输出,它为我提供了使用JS代码构建的HTML的字符串版本。事实是,它们都是这样单行的:

<!DOCTYPE html><html><head><title>Shopping List</title><style>
    .row {
        display: flex;
        flex-direction: row;
    }

    .col {
        display: flex;
        flex-direction: column;
    }
</style></head><body></body></html>

唯一的换行符来自我要添加的文字CSS。我想要的是序列化并以有效漂亮打印的方式将其全部打印出来,即包括换行符和缩进。这仅用于开发,以便在调试时可以更轻松地读取输出。

任何建议将不胜感激。谢谢。

javascript node.js jsdom
1个回答
1
投票

您可以使用名为pretty的npm软件包。

var pretty = require('pretty');

pretty(STRING_OF_HTML);

之前

<!DOCTYPE html> <html lang="en"> <head> 
<meta charset="UTF-8"> <title>Home</title> 
</head> <body> This is content. </body> </html>

之后

<!DOCTYPE html>
  <html lang="en">
  <head>
    <meta charset="UTF-8">
    <title>Home</title>
  </head>
  <body>
    This is content.
  </body>
</html>
© www.soinside.com 2019 - 2024. All rights reserved.