异步渲染EJS(先渲染然后数据)

时间:2018-08-29 08:01:13

标签: node.js express ejs

我对使用引擎模板还很陌生,需要一些帮助。

我正在使用EJS模板引擎来呈现我的HTML,并且想知道它是否本质上可以首先呈现HTML页面,然后呈现我的数据。

例如:

我有一个页面渲染如下,该页面渲染在其数据对象中调用一个函数:

res.render(root + "/pages/home/home.ejs", {
     data: render()
});

此render()函数非常繁琐,需要几秒钟才能完成。我想知道我是否可以先提供HTML文件,然后在完成后允许数据异步传递到页面?

我也想避免这样做:

render().then(data => {
    res.render(root + "/pages/home/home.ejs", {
        data: data
    })
})

我应该使用的任何建议或其他模板引擎都会很有帮助。

1 个答案:

答案 0 :(得分:0)

您正在服务器端(res.render())上呈现应用程序。因此,您无法在渲染模板后绑定数据。这是因为当您使用服务器端渲染时,您正在服务器上生成一个html并将其作为响应发送。之后,您将无法访问客户端代码。 (如php)

在这种情况下,您必须使用客户端http请求来获取数据。然后在客户端将其填写。您必须在服务器端创建一个http api。