猿问

如何在node.js 中填充ejs模板数据

如题,

我有一个页面:


<!---index.html.ejs--->

<html>

  <head>

    <title><%= title %></title>

  </head>

  <body>

    <h1><%= title %></h1>

    <p>Contents:<br />

    <%= contents %>

    </p>

  </body>

</html>

//data.json

{

  "title":"Hello World!",

  "contents":"你好!世界!!"

}

//func.js

const readFile   = require('util').promisify(require('fs').readFile);

const renderFile = require('util').promisify(require('ejs').renderFile);


async function render_page(template,dbfile){

  let result = await readFile(dbfile).catch(err=>{

     return new Error("readFile ERROR: " + err);

  });

  result = result.toString();


  let r = renderFile(template,result).catch(err=>{

     return new Error("renderFile ERROR: " + err);

  });

  return r;

}


exports.render = render_page;


//index.js

let result = require('./func').render('index.html.ejs','data.json');

执行后反馈不能识别出ejs模板的title是啥……

这是为啥?

不负相思意
浏览 601回答 2
2回答

手掌心

是不是因为你把 result转成了字符串,所以读取不到里面的 title 属性。去掉 result = result.toString() 试试?

MM们

不要传json
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答