在继续请求的同时渲染加载器页面

时间:2019-07-12 09:25:22

标签: javascript node.js shopify shopify-app

我目前正在开发使用nodejs和ejs以及shopify api的应用程序。我想知道是否有一种方法可以在请求完成后在屏幕上呈现微调器/加载器。

我的意思是:

app.get('/', (req, res) => {
  res.render('loader');
  // continue the api authentication
});

有什么可能的方法。

2 个答案:

答案 0 :(得分:0)

一旦您调用res.render(),请求将完成。

首先,如果您未使用xhr,fetch,axios等,则无法使用后端上的代码动态更改前端上的内容。

因此,在您的用例中,您可以做的是,使用DOM提取API或所需的任何库在“ /”路由处执行GET请求。代码可能如下所示。

const getData = async () => {
   showloader()
   const data = await fetch('/).then(res => res.json())
   hideLoader()
}

在后端,只需执行身份验证逻辑并发送回身份验证状态,客户端接收到数据后,您就可以担心相应地处理DOM。

答案 1 :(得分:0)

我看到您正在使用服务器端渲染,它会返回html以显示在服务器本身上。

仅在已加载的UI上显示微调框,其中后续请求仅获取数据并将其重新插入UI中。当您已经加载页面 您可以开始和停止在屏幕上显示加载程序。

如果您试图在请求中完全加载新页面,则将不可能。

解决方案:

1)使用SPA架构。 2)从节点服务器返回来自服务器的已编译html作为对ajax请求的响应,然后将其自己插入UI中,这样,您已经加载了一个页面,可以在其中显示一个微调器。您将必须在服务器本身上获取已编译的html,然后将html作为已编码的字符串发送回去,在UI上解码回去并插入。