• 10.vue-router实现路由懒加载( 动态加载路由 )


    vue-router实现路由懒加载

     

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

    1、定义

      也叫延迟加载,即在需要的时候进行加载,随用随载

    2、为什么需要

      像vue这种单页面应用,如果没有应用懒加载,运用webpack打包后的文件将会异常的大,造成进入首页时,需要加载的内容过多,时间过长,会出啊先长时间的白屏,即使做了loading也是不利于用户体验,而运用懒加载则可以将页面进行划分,需要的时候加载页面,可以有效的分担首页所承担的加载压力,减少首页加载用时,进入首页不用一次加载过多资源造成用时过长。

    3、如何实现?

    (1)第一种写法:使用 AMD 风格的 require,于是就更简单了:

    例:const Foo = resolve => require(['./Foo.vue'], resolve)
    复制代码
    const routers = [
        {
            path: '/',
            name: 'index',
            component: (resolve) => require(['./views/index.vue'], resolve)
        }
    ]
    复制代码

    (2)第二种写法:(使用import)

    例:component: () => import('@/components/Two')
    复制代码
    const Index = () => import(/* webpackChunkName: "group-home" */  '@/views/index')
    const routers = [
        {
            path: '/',
            name: 'index',
            component: Index
        }
    ]
    复制代码

    (3)第三种写法:使用webpack特有的require.ensure()。注:require.ensure 是 Webpack 的特殊语法,用来设置 code-split point

    例:components: r => require.ensure([], () => r(require('@/components/Three')), 'group-home')
    复制代码
    const Index = r => require.ensure([], () => r(require('./views/index')), 'group-home');
    const routers = [
        {
            path: '/',
            name: 'index',
            component: Index
        }
    ]
    复制代码

    4、把组件按组分块

    有时候我们想把某个路由下的所有组件都打包在同个异步块 (chunk) 中。只需要使用 命名 chunk,一个特殊的注释语法来提供 chunk name (需要 Webpack > 2.4)。

    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')
    const Foo = () => import(/* webpackChunkName: "group-foo" */ './Foo.vue')
    const Bar = () => import(/* webpackChunkName: "group-foo" */ './Bar.vue')
    const Baz = () => import(/* webpackChunkName: "group-foo" */ './Baz.vue')

    Webpack 会将任何一个异步模块与相同的块名称组合到相同的异步块中。

    5、注

    • 一般常用第二种简写

    • 第三种中,’group-home’是把组件按组分块打包, 可以将多个组件放入这个组中,在打包的时候Webpack会将相同 chunk 下的所有异步模块打包到一个异步块里面。

  • 相关阅读:
    python3
    python2
    python的爬虫
    SQL SEVERE 基本用法 1
    安装SQL SEVER 2017 express 轻量入门级软件 安装教程
    面试学习资料
    后端架构师--总结网址收藏(个人)
    JVM学习网址(收集总结)
    RabbitMQ--学习资源汇
    Redis 学习资料目录(Important)
  • 原文地址:https://www.cnblogs.com/dream111/p/13493623.html
Copyright © 2020-2023  润新知