node.js - 异步渲染 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
})
})
我应该使用的任何建议或其他模板引擎都会非常有帮助。
解决方案
您正在服务器端 ( res.render()
) 呈现您的应用程序。所以渲染模板后不能绑定数据。这是因为当您使用服务器端渲染时,您会在服务器上生成一个 html 并将其作为响应发送。之后,您将无权访问客户端代码。(如 php)
在这种情况下,您必须使用客户端 http 请求来获取数据。然后在客户端填写它们。您必须在服务器端创建一个 http api。
推荐阅读
- ios - NavigationView 样式中的 SwiftUI SidebarListStyle
- r - {blogdown} 每个帖子的固定围兜
- sql - 如何对自定义类型设置非空约束?
- c - 方法返回时退出条件循环后JNI收到错误消息
- reactjs - prompt(),但在 React 中制作
- docker - 使用 AWS CodeBuild 的 docker push 失败,退出状态为 1
- assembly - 在我的汇编代码中,子程序返回,但代码又从头开始
- python - Osascript 和 ITU
- list - 在颤动中将多个项目添加到列表中
- laravel - 为什么 Laravel Livewire 中的 flash 消息只显示一次?