面试题答案
一键面试配置异步组件实现路由懒加载的方式
在Vue Router中,通过将组件定义为一个返回Promise的函数来实现异步组件和路由懒加载。常见的写法有以下两种:
- ES2020动态导入语法:
import { createRouter, createWebHistory } from 'vue-router'
const router = createRouter({
history: createWebHistory(),
routes: [
{
path: '/home',
name: 'Home',
component: () => import('@/views/Home.vue')
}
]
})
export default router
- Webpack的
import()
语法(旧版):
import { createRouter, createWebHistory } from 'vue-router'
const router = createRouter({
history: createWebHistory(),
routes: [
{
path: '/home',
name: 'Home',
component: () => import(/* webpackChunkName: "home" */ '@/views/Home.vue')
}
]
})
export default router
在上述代码中,component
属性的值是一个函数,该函数使用import()
动态导入组件。这样,只有当路由被访问时,对应的组件才会被加载。
路由懒加载的好处
- 提高首屏加载速度: 在大型项目中,打包后的JavaScript文件可能会非常大。如果所有组件都在初始加载时就被包含进来,会导致首屏加载时间过长。使用路由懒加载,只有在用户访问特定路由时才加载对应的组件,从而减少了初始加载的代码量,加快了首屏加载速度。
- 优化用户体验: 用户不必等待所有组件都加载完成才能开始使用应用。当用户访问不同路由时,对应的组件按需加载,使得应用在使用过程中更加流畅,避免了长时间的卡顿等待。
- 代码分割与优化: 路由懒加载实现了代码的自动分割,Webpack会将不同路由对应的组件打包成不同的chunk文件。这有助于更好地管理和优化代码结构,使得项目的维护和更新更加容易。同时,浏览器可以并行加载这些chunk文件,进一步提高加载效率。