vue-router 异步加载 
时间: 2023-05-22 12:00:37 浏览: 132
Vue-router 异步加载可以通过使用 webpack 的 code splitting 功能来实现。具体来说,可以使用 import() 函数来异步加载组件,然后在路由配置中使用 component 属性来指定加载的组件。例如:
const Foo = () => import('./Foo.vue')
const router = new VueRouter({
routes: [
{ path: '/foo', component: Foo }
]
})
这样,当访问 /foo 路径时,会异步加载 Foo.vue 组件并渲染到页面上。
相关问题
vue3如何实现vue-router的异步路由,请给出实现示例
Vue3 中可以使用 import 函数来实现异步路由,示例代码如下:
```javascript
import { createRouter, createWebHistory } from 'vue-router'
const router = createRouter({
history: createWebHistory(),
routes: [
{
path: '/',
name: 'Home',
component: () => import('./views/Home.vue')
},
{
path: '/about',
name: 'About',
component: () => import('./views/About.vue')
}
]
})
```
在上面的代码中,我们使用了 import 函数来动态加载组件,这样可以实现异步路由。当用户访问某个路由时,对应的组件才会被加载。
vue-router 按需加载 component: () => import() 报错
> 为什么我们要按需加载 Vue 组件?使用 Vue Router 的 `component` 配置项的值为什么可以是一个函数?其具体实现方式是什么?
当我们的项目变得越来越大时,页面也逐渐增多,如果一开始便将所有组件都加载进来,那么页面会变得过于庞大,进而导致启动时间变长,用户体验也会受到影响。因此,我们希望只有在用户真正需要使用某个组件时才加载它,这就是按需加载组件的主要目的。
Vue Router 提供了 `component` 配置项用于指定当前路由所需渲染的组件,它支持两种类型的值:组件对象和组件构造器(即通过 `Vue.extend(options)` 创建的组件),但它也可以是一个函数。这是因为 Vue Router 允许我们使用异步组件,而异步组件是通过函数形式来定义的。具体实现方式如下:
```javascript
{
path: '/async-component',
component: () => import('./components/AsyncComponent.vue')
}
```
上述代码中,`AsyncComponent.vue` 是异步组件,它使用了 Webpack 提供的 `import()` 函数来懒加载组件,这个函数会异步加载代码块并且返回一个 Promise,Promise resolve 的值就是组件本身。在路由跳转时,如果当前组件尚未被加载,则会触发异步加载,直到组件被完整加载并编译后才会被渲染到页面上。
按需加载组件是一种非常常见也非常实用的优化方式,它不仅可以缩短页面加载时间,也可以降低首次渲染的复杂度,提升用户的使用体验。同时,在实际开发中,我们也需要考虑代码分割的问题,将代码分成多个较小的块,按需加载。这样不仅可以减小网页加载的大小,同时也是打包优化的一部分。
相关推荐















