使用小胡子从JSON渲染HTML

时间:2017-07-27 01:10:42

标签: javascript json node.js mustache lighthouse

我有一个Node.JS文件,可以输出页面加载分析测试结果。我已将结果存储在results.json文件中JSON.stringify()

launchChromeAndRunLighthouse('https://www.microsoft.com/en-us/', flags, perfConfig).then(results => {
    fs.appendFile('results.json', JSON.stringify(results), (err) => {
        if(err){ throw err; }
        console.log('Data was appended to file!');
        var myObj = results.json; //problematic
        var JSON_to_HTML = mustache.render('This test was generated at this time: {{generatedTime}}.', myObj); //problematic
    });
});

现在我想在浏览器中显示结果,所以我想将JSON翻译成HTML。我想为此使用胡子,但这些线对我不起作用:

var myObj = results.json;
var JSON_to_HTML = mustache.render('Test was generated at this time: {{generatedTime}}.', myObj);

我收到错误“结果未定义”,这样的胡子无法读取JSON文件。我无法使用原始JSON初始化“myObj”,因为它大约有一百万行(我需要稍后为一大堆页面运行测试,因此我现在无法对其进行硬编码)。

我不知道如何将我现在拥有的这个JSON文件翻译成HTML。有没有人有任何想法?我是Node和Mustache的初学者,任何提示都非常感谢。

1 个答案:

答案 0 :(得分:0)

很多谷歌搜索让我自己回答。

要读取测试结果的JSON文件并从中创建HTML页面,我必须为此Node模块创建一个package.json文件(运行npm init)。创建文件后,我在sublime中打开它并编辑scripts所以CLI命令'build'将获取.json文件,从.mustache文件中获取我想要显示的内容.json文件,并将其粘贴在.html文件中。

"scripts": { "build": "mustache results.json basicTemplate.mustache > theDisplay.html", "test": "echo \"Error: no test specified\" && exit 1" },

results.json是我从字母串入的问题。 basicTemplate.mustache现在是

{{generatedtime}} {{initialurl}}

和theDisplay.html只是一个基本的html模板(如this)。

现在,当我运行node <name of node module>时,会生成结果文件。然后我运行npm run build,我刚刚在package.json中创建了这个脚本。这会修改theDisplay.html。您现在应该能够双击Finder中的Display.html,并打开一个浏览器,其中包含生成测试的时间以及测试页面的URL。