Vue3优化之实现懒加载和子组件异步加载

路由懒加载

因为Vue在打包的时候将所有路由组件一次性打包到一个文件中,会导致初始加载时需要下载较大的文件。而使用路由懒加载,可以将路由组件拆分为多个小文件,只有在需要时才会下载对应的文件,从而降低初始资源负载。按需加载组件的资源,提高资源使用率、提高用户体验。.

原来路由的写法:

import Vue from 'vue';
import VueRouter from 'vue-router';
import Home from "@/views/Home.vue";
import About from "@/views/About.vue";

Vue.use(VueRouter);

const routes = [
  {
    path: '/',
    name: 'Home',
    component: Home,
  },
  {
    path: '/about',
    name: 'About',
    component: About,
  },
  // 其他路由...
];

const router = new VueRouter({
  routes
});

export default router;

路由懒加载的写法:

import Vue from 'vue';
import VueRouter from 'vue-router';

Vue.use(VueRouter);

const routes = [
  {
    path: '/',
    name: 'Home',
    component: () => import('./views/Home.vue')
  },
  {
    path: '/about',
    name: 'About',
    component: () => import('./views/About.vue')
  },
  // 其他路由...
];

const router = new VueRouter({
  routes
});

export default router;

异步组件

因为vue在加载的时候会先加载完子组件之后,才把父组件给加载了,这样如果子组件加载时间过长,就会导致页面出现长时间的空白,使用异步组件就可以解决这个问题。

vue3提供了 defineAsyncComponent ,它可以更简洁地定义异步组件。0只需要传递一个返回 import() 函数的参数,该函数会在需要时动态加载组件。这样可以减少手动编写异步加载的代码。

代码:

import { defineAsyncComponent, Suspense } from 'vue';

const AsyncComponent = defineAsyncComponent(() => import('./components/AsyncComponent.vue'));

export default {
  // ...
  components: {
    AsyncComponent
  },
  // ...
  template: `
    <div>
      <Suspense>
        <AsyncComponent />
      </Suspense>
    </div>
  `
};

这样我们的页面加载就会很快了。

相关推荐

  1. Vue3优化实现组件异步

    2023-12-10 13:06:02       38 阅读
  2. vue组件载有什么区别

    2023-12-10 13:06:02       34 阅读
  3. Vue3实现图片

    2023-12-10 13:06:02       15 阅读
  4. Vue3: Suspense异步组件

    2023-12-10 13:06:02       39 阅读
  5. 完美实现vue3异步组件

    2023-12-10 13:06:02       12 阅读
  6. Vue-Router: 如何使用异步组件实现路由

    2023-12-10 13:06:02       34 阅读
  7. vue 异步组件

    2023-12-10 13:06:02       37 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-10 13:06:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-10 13:06:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-10 13:06:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-10 13:06:02       18 阅读

热门阅读

  1. Web服务端由哪些设备组成

    2023-12-10 13:06:02       33 阅读
  2. MyBatis框架中的5种设计模式总结

    2023-12-10 13:06:02       39 阅读
  3. FPGA | Modelsim仿真

    2023-12-10 13:06:02       42 阅读
  4. pytorch 钩子函数hook 详解及实战

    2023-12-10 13:06:02       41 阅读
  5. vue.js怎么保证计算精度

    2023-12-10 13:06:02       36 阅读