所以我正在动态地在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。我想要的是序列化并以有效漂亮打印的方式将其全部打印出来,即包括换行符和缩进。这仅用于开发,以便在调试时可以更轻松地读取输出。
任何建议将不胜感激。谢谢。
答案 0 :(得分: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>