Home > Web Front-end > JS Tutorial > Add loading during lazy loading

Add loading during lazy loading

php中世界最好的语言
Release: 2018-05-02 11:52:05
Original
1848 people have browsed it

This time I will bring you the addition of loading during the lazy loading process. What are the precautions for adding loading during the lazy loading process? The following is a practical case, let's take a look.

Everyone who has used vue-router knows that it can implement lazy loading of module js, that is, only load the js script file of the corresponding module when needed to speed up the display of the homepage. For example, only when a user clicks a "User Information" button or menu for the first time, the js component of the "User Information" module is downloaded.

The implementation of lazy loading relies on the function of AMD mode

require function under webpack. Webpack will generate an independent js file from the asynchronous require file. When calling, it will download the js asynchronously and execute it after completion. The key code implemented in the development project is:

const basicInfo = {
  path: '/user',
  component: resolve => require(['./basicInfo.vue'], resolve) 
}
//然后将这个basicInfo加入路由表中
Copy after login
But there is a problem here: starting from the user clicking the "User Information" menu, to the completion of js

file download , due to downloading from the network js has a time delay, during which the user interface does not respond at all, making users feel that clicking on it is ineffective, and they often click again. This is especially true when the js file is large and the network speed is slow. Therefore, it is necessary to add a Loading loading prompt in this process.

We analyze this line of code:

resolve => require(['./basicInfo.vue'], resolve)
Copy after login
It is a function that executes the require process, and then calls resolve

callback function after it is completed. We only need to encapsulate it, display Loading before require is executed, and then hide Loading when the callback is completed and executed, and this requirement will be achieved. As follows:

const basicInfo = {
  path: '/user',
  component: resolve => {
    [显示Loading]
    require(['./basicInfo.vue'], component => {
      [隐藏Loading]
      resolve(component)
    })
  }
};
Copy after login
The code for displaying and hiding Loading can be processed according to your own UI framework. For example, element-ui:

import { Loading } from 'element-ui';
var unique;
export default {
  show() {
    let opt = {body: true, text: 'Loading...'};
    if(!unique) unique = Loading.service(opt);
  },
  resolve(resolve) {
    return function (component) {
      if (unique) {
        unique.close();
        unique = null;
      }
      resolve(component)
    }
  }
}
const basicInfo = {
  path: '/user',
  component: resolve => {
    spinRoute.show();
    require(['./basicInfo.vue'], spinRoute.resolve(resolve))
  }
};
Copy after login
I believe you have mastered the method after reading the case in this article. For more exciting information, please pay attention to other related articles on the PHP Chinese website!

Recommended reading:

JS implementation stays in the interface prompt box

Detailed explanation of the 4 steps of vue cli upgrade webpack

The above is the detailed content of Add loading during lazy loading. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template