• vue 组件按需引用,vue-router懒加载,vue打包优化,加载动画


    当打包构建应用时,Javascript 包会变得非常大,影响页面加载。如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就更加高效了。

    结合 Vue 的 异步组件 和 Webpack 的 code splitting feature, 轻松实现路由组件的懒加载。

    我们要做的就是把路由对应的组件定义成异步组件

    const Foo = resolve => {
      // require.ensure 是 Webpack 的特殊语法,用来设置 code-split point
      // (代码分块)
      require.ensure(['./Foo.vue'], () => {
        resolve(require('./Foo.vue'))
      })
    }

    这里还有另一种代码分块的语法,使用 AMD 风格的 require,于是就更简单了:

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

    不需要改变任何路由配置,跟之前一样使用 Foo

    const router = new VueRouter({
      routes: [
        { path: '/foo', component: Foo }
      ]
    }) 

    把组件按组分块

    有时候我们想把某个路由下的所有组件都打包在同个异步 chunk 中。只需要 给 chunk 命名,提供 require.ensure 第三个参数作为 chunk 的名称:

    const Foo = r => require.ensure([], () => r(require('./Foo.vue')), 'group-foo')
    const Bar = r => require.ensure([], () => r(require('./Bar.vue')), 'group-foo')
    const Baz = r => require.ensure([], () => r(require('./Baz.vue')), 'group-foo')

    Webpack 将相同 chunk 下的所有异步模块打包到一个异步块里面 —— 这也意味着我们无须明确列出 require.ensure 的依赖(传空数组就行)。

    如果你想在组件加载的时候可以有loading提示也同样的很简单

    这里以mint-ui为例

    import { Indicator } from 'mint-ui';
    //前提是npm i mint-ui -S

    然后你就只需要稍微加一点代码

    const Foo = resolve => {
    Indicator.open();
      require.ensure(['./Foo.vue'], () => {
        resolve(require('./Foo.vue'))
        Indicator.close()
      })
    }
    //这样就可以实现组件在异步加载的时候显示loading

    效果如下

  • 相关阅读:
    Traefik-v2.x快速入门
    jenkins pipeline持续集成
    phpstorm 2017激活码(方法)
    PHP保留两位小数的几种方法
    php 数组排序 按照某字段
    sql大全
    解决jpgraph在php7.0版本下时,无法显示例子图表的问题
    Linux 定时任务crontab使用
    VIM命令操作
    wampserver变橙色,apache 服务无法启动!问题解决小记(安装失败亦可参考)
  • 原文地址:https://www.cnblogs.com/coolslider/p/7074609.html
Copyright © 2020-2023  润新知