【发布时间】:2020-10-26 06:09:40
【问题描述】:
我有一个基本的 Node js express web 应用程序,前端带有 webix UI。
有很多组件/表格需要在这些表格中填充大量数据。
我有一个加载屏幕,其中包含一些背景图像,每 3 秒更改一次背景图像 URL,直到所有数据的加载完成。
加载屏幕的问题在于图像不是浏览器首先下载的内容。这些表格有时甚至在图像下载之前就已填充,这超出了加载屏幕的全部目的。
我想知道是否有一种方法可以在浏览器中打开应用程序时首先加载这些图像。
这是 HTML 代码:
<body>
<div id="container-id" class="container">
<div id="text-id" class="text">Loading...</div>
</div>
</body>
这是 CSS:
@-webkit-keyframes changeBg
{
0% {background-image: url("/resources/images/one.jpg");}
25% {background-image: url("/resources/images/two.jpg");}
50% {background-image: url("/resources/images/three.jpg");}
75% {background-image: url("/resources/images/four.jpg");}
100% {background-image: url("/resources/images/five.jpg");}
}
.container {
height: 100%;
width: 100%;
background-image: url("/resources/images/one.jpg");
-webkit-animation: changeBg 15s infinite;
background-size: 100%;
background-position: center;
}
基于这个类似的问题:load specific image before anything else
我尝试使用 javascript 作为索引页面的前几行加载图像,如下所示:
<head>
<script type="text/javascript">
(new Image()).src= window.location.href + "resources/images/one.jpg";
(new Image()).src= window.location.href + "resources/images/two.jpg";
(new Image()).src= window.location.href + "resources/images/three.jpg";
(new Image()).src= window.location.href + "resources/images/four.jpg";
(new Image()).src= window.location.href + "resources/images/five.jpg";
</script>
<link rel="stylesheet" href="webix.css" type="text/css" media="screen" charset="utf-8" />
<link rel="stylesheet" href="app.css" type="text/css" media="screen" charset="utf-8" />
</head>
但是,其他请求仍然在图像之前得到服务。
【问题讨论】:
-
你可以尝试用
promises实现它吗? -
不能使用
Promises?例如:伪代码:ImagePromise.All(fetchImages).then(loadDOM)? -
如果您使用节点作为服务器,请尝试对前端做出反应。 React 让这件事变得更简单。 :)
-
@KarlL 您的意思是在 Promise 中加载图像,然后在“then”部分中加载其余的 CSS 和 JS 文件? 资产将如何在当时的部分中被识别 - 我在这里有什么问题吗?有没有办法可以在答案中发布 JSFiddle 或示例 sn-p
-
@cybercoder 我没有尝试过,但我怎么会在“then”部分声明其余资产,比如 Javascript 无法识别 标签 - 我这里有什么问题吗?有没有办法可以在答案中发布 JSFiddle 或示例 sn-p
标签: javascript html css node.js