记录vue-router打包优化(懒加载、分包方式)

在使用vue-router时,对路由配置打包的一些方法和问题的记录

未优化的打包方式

路由文件:

import { createRouter, createWebHashHistory, createWebHistory } from "vue-router"
import Home from "../page/Home.vue"
import About from "../page/About.vue"
// 配置路由规则
const routes = [
    {path: '/', redirect: '/home'},
    { path: '/home', component: Home },
    { path: '/about', component: About }
]
// 创建路由对象
const router = createRouter({
    routes,
    history: createWebHistory(), // 指定history模式

})
export default router

如果我们使用上面这种配置模式打包的话,最终我们路由文件引用的单文件组件都会全部被打包在一起一个文件
在这里插入图片描述
这样子的话,我们浏览器一打开这个组件页面时,它就要把这个非常大的包加载完,这是非常不理想的状态。

那么要怎么解决这个问题呢? vue-router官方推荐我们用赖加载的形式来加载这些单文件组件。

优化后的打包方式

在优化前,我们要先理解一下import()动态导入时最终返回的是一个promise对象:
关键字import可以像调用函数一样来动态的导入模块。以这种方式调用,将返回一个 promise。

import('/modules/my-module.js')
  .then((module) => {
    // Do something with the module.
  });

我们来修改一下路由文件:



import { createRouter, createWebHashHistory, createWebHistory } from "vue-router"

// 懒加载配置模式
const routes = [
    {path: '/', redirect: '/home'},
    // 这里的component配置为返回一个promise的方法
    { path: '/home', component: () => import("../page/Home.vue")},
    { path: '/about', component: () => import("../page/About.vue") }
]
// 创建路由对象
const router = createRouter({
    routes,
    history: createWebHistory(), // 指定history模式

})
export default router

在这里插入图片描述

我用的是vite打包,所以打包后的文件都会自动添加上文件名字,如果用的是vue-cli打包的话,需要用到wepack的一个magic comments (魔法注释)

vue-cli在配置时, 加上这个固定的注释方式:

// 懒加载配置模式
const routes = [
    {path: '/', redirect: '/home'},
    { path: '/home', component: () => import(/* webpackChunkName: "myHome" */"../page/Home.vue")},
    { path: '/about', component: () => import(/* webpackChunkName: "myAbout" */"../page/About.vue") }
]

打包后我们的文件都已经被拆分开来,这样子我们可以进行加载时做一些优化。显示当前单组件页面时,该组件的包加载完后再去加载其他包。这就是分包优化的一种。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值