• 技术文章 >web前端 >js教程

    vue-router懒加载详解(附代码)

    php中世界最好的语言php中世界最好的语言2018-04-20 11:24:21原创1371
    这次给大家带来vue-router懒加载详解(附代码),vue-router懒加载使用的注意事项有哪些,下面就是实战案例,一起来看一下。

    用过vue-router都知道它可以实现模块js的懒加载,即只有当需要时才去加载对应模块的js脚本文件,以加速主页的显示。比如只有第一次用户点击某个“用户信息”按钮或菜单时,才下

    这次给大家带来,的注意事项有哪些,下面就是实战案例,一起来看一下。

    载“用户信息”这个模块的js组件。

    懒加载的实现,依赖与webpack下AMD模式require函数的功能。webpack会将异步require的文件生成一个独立的js文件,调用时异步下载这个js且在完成后再执行它。开发项目中实现的关键代码是:

    const basicInfo = {
      path: '/user',
      component: resolve => require(['./basicInfo.vue'], resolve) 
    }
    //然后将这个basicInfo加入路由表中

    但是这里有个问题:从用户点击“用户信息”菜单开始,到js文件下载完毕执行开始,由于从网络下载js有一个时间延迟,这期间用户界面是没有任何响应的,让用户感觉点上去无效,常会重复再次点击。特别是js文件大而网速慢时更明显。因此,在这个过程中添加一个Loading的加载提示很有必要。

    我们分析这行代码:

    resolve => require(['./basicInfo.vue'], resolve)

    它是一个函数,执行了require的过程,完成后再调用resolve回调函数。我们只要封装一下,在require执行之前显示Loading,然后在加载完成执行回调的时候隐藏Loading,也就实现这个需求了。如下:

    const basicInfo = {
      path: '/user',
      component: resolve => {
        [显示Loading]
        require(['./basicInfo.vue'], component => {
          [隐藏Loading]
          resolve(component)
        })
      }
    };

    显示和隐藏Loading的代码,可根据自己的UI框架处理就行。比如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))
      }
    };

    相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

    推荐阅读:

    vue cli如何升级webapck4

    vue-cli 3.0 新手入门必知

    D3.js实现动态表盘效果

    以上就是vue-router懒加载详解(附代码)的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:vue-router 代码 加载
    上一篇:babel转换es6步奏详解 下一篇:node服务器跨域步奏详解
    大前端线上培训班

    相关文章推荐

    • JavaScript怎么删除延时器• javascript是单进程还是多线程• javascript怎么实现5秒后跳转页面• javascript怎么修改span• javascript中如何获取属性

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网