在上一篇文章中,引入了前端 - 端订阅方法以提高页面性能,并介绍了预订阅的原则和实践
如何优化第一个屏幕加载速度?尝试前端呈现效率!
但是,在前端路由的单页应用程序中,仍然会有一些问题。本文介绍了另一个页面优化解决方案:数据已预先下载和汇总插头 - 以实现Pre -downloadloading数据的功能。
我们知道,前端的预渲染原理是:构建包装后,插头 - 将在本地启动Express static服务,并将服务包装包装的静态资源启动。然后启动无头浏览器(例如)。浏览器从服务器请求网页。运行网页时,将请求第一个屏幕接口。从数据获得数据后,头屏幕包含content.original html。
但是,单页应用程序中存在问题。当前端路由切换时,仍将请求接口,而无需加载前施用的html,例如pre -rendering index.html和大约。前端路由,它不会从服务器请求大约.html。取而代之的是,它将加载一个关于组件,该组件仍然会询问接口,这可能会带来慢速接口渲染。
如何解决这个问题呢?
在加载精神问题库的页面时,我想到的一种简单的方法是模仿前端填充的想法。在施工阶段,一些数据被预载。下载后,将其存储在JSON File.middle中。然后,当前端启动请求时,使用AXIOS拦截预下载请求并将其更改为请求静态JSON数据。
这将带来两个好处
在下面,我们编写一个汇总插头-in以实现预下载数据的功能。此插头需要做以下操作
在汇总插头-in中,需要实现转换挂钩,以将配置的JSON文件名注入并映射到代码中。还必须在此阶段编写捆绑结构,请求数据并将JSON文件输出到构造目录中。
插件使用库请求数据。
此外,应注意的是,为了确保可以及时更新数据,您需要将版本编号添加到JSON。此处的版本号仅设置为当前时间。实际上,使用内容的MD5更合适。
插件代码如下:
汇总的插头配置如下
最后,将在不同目录中生成一些文件
Axios拦截请求,替换请求的JSON代码如下
此外,另一个问题:如果数据很大,则将及时迅速要求,但是长列表渲染将非常慢。
目前,精神问题库的解决方案是通过懒惰的负载来解决它。只有前20名才是首先渲染的。在数据渲染过程中加载以提供良好的交互体验。当然,这个问题是通过分页最优雅的解决方案。