Bootstrap

路由懒加载

路由懒加载

什么是路由懒加载

Vue路由懒加载是一种优化单页面应用性能的技术。它使路由组件按需加载,避免在应用初次加载时加载所有页面组件,从而减少首屏加载时间。

为什么需要路由懒加载

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

路由懒加载的实现

  1. Vue异步组件

    const router = new VueRouter({
    	// ...
        routes: [
    	    {
    	        path: '/',
    	        name: 'HelloWorld',
    	        component: resolve => require(['@/components/HelloWorld'], resolve)
    	    }
    	]
    })
    

    在vue3中使用require()语法引入模块或包后,浏览器控制台出现报错:Undcaught ReferenceError: require is not defined
    在这里插入图片描述
    原因:require是webpack提供的一种加载能力,但是Vue3是用vite搭建的。

  2. import动态导入

    // Vue3
    import { createRouter } from 'vue-router'
    const LoginPage = () => import('@/views/login/LoginPage.vue')
    const router = createRouter({
      // ...
      routes: [
        { path: '/login', component: LoginPage },
        { path: '/article/manage', component: () => import('@/views/layout/LayoutContainer.vue') }
      ],
    })
    
    export default router
    
    // Vue2
    import Vue from 'vue'
    import VueRouter from 'vue-router'
    Vue.use(VueRouter)
    export default new VueRouter({
    	routes:[
    		{
    			path:'/',
    			component: () => import('@/views/login/index.vue')
    		}
    	]
    })
    
  3. webpack中提供的require.ensure()实现

    // 仅Vue2使用,Vue3是用vite搭建的。
    import Vue from 'vue'
    import VueRouter from 'vue-router'
    const Login = resolve => {
    		require.ensure(['@/views/login/index.vue'], () => {
    			resolve(require('@/views/login/index.vue'))
    		})
    	}
    Vue.use(VueRouter)
    export default new VueRouter({
    	routes:[
    		{
    			path: '/',
    			component: Login
    		}
    	]
    })
    

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;