首页 > 解决方案 > 异步渲染 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
    })
})

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

标签: node.jsexpressejs

解决方案


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

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


推荐阅读