news 2026/6/15 15:13:15

Vue 3 中,路由级别的代码分割(Route-level Code Splitting)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Vue 3 中,路由级别的代码分割(Route-level Code Splitting)

Vue3路由级代码分割通过动态import()实现懒加载,将每个路由组件拆分为独立JS文件,仅在访问时加载。


这种技术能显著减少初始加载体积,提升首屏速度,并优化缓存策略。


构建工具会自动生成单独chunk文件,如About.[hash].js,无需额外配置即可在Vite+Vue3项目中开箱使用。


该方案通过按需加载机制有效平衡性能与用户体验。


在Vue3项目路由中,看到如下注释

Vue3 路由


router/index.ts


route level code-splitting

this generates a separate chunk (About.[hash].js) for this route

which is lazy-loaded when the route is visited.


在 Vue 3 中,路由级别的代码分割(Route-level Code Splitting)是一种优化应用性能的重要技术。它通过懒加载(Lazy Loading)的方式,将不同路由对应的组件拆分成独立的 JavaScript 文件(即“chunks”),只有当用户访问该路由时,才动态加载对应的代码。


基本原理

默认情况下,如果不使用代码分割,所有路由组件都会被打包进一个主 bundle(如app.js)中,导致首屏加载时间变长、带宽浪费。

而通过动态import()语法配合 Vue Router,可以实现按需加载:

// router/index.js (Vue 3 + Vue Router 4) import { createRouter, createWebHistory } from 'vue-router' const routes = [ { path: '/', component: () => import('../views/Home.vue') // 懒加载 Home 组件 }, { path: '/about', component: () => import('../views/About.vue') // 懒加载 About 组件 } ] const router = createRouter({ history: createWebHistory(), routes }) export default router

发生了什么?

当你写成:

component: () => import('../views/About.vue')

构建工具(如 Vite 或 Webpack)会:

  1. 识别动态 import
  2. About.vue单独生成一个 chunk 文件,例如:
    About.abc123.js(其中abc123是内容哈希);
  3. 主 bundle 中只保留加载逻辑,不包含About.vue的实际代码;
  4. 当用户首次访问/about路由时,浏览器才会发起请求加载这个 chunk,并渲染组件。

这就是所谓的“route-level code-splitting”


✅ 优点

  • 减少初始加载体积:提升首屏加载速度;
  • 按需加载:节省用户带宽,尤其对移动端友好;
  • 更好的缓存策略:每个 chunk 可独立缓存,更新一个页面不影响其他 chunk 的缓存。

补充技巧

1. 自定义 chunk 名称(Webpack / Vite)

你可以通过注释指定 chunk 名称,便于调试或分组:

component: () => import(/* webpackChunkName: "about" */ '../views/About.vue')

注意:Vite 默认忽略webpackChunkName,但支持原生的动态 import 分块,通常无需额外配置。

2. 预加载(可选)

Vue CLI 或 Vite 可配置预加载策略(如 hover 时预加载),但默认是“访问时加载”


构建后效果示例

构建后输出可能如下:

1dist/ 2├── assets/index.hash.js # 主入口 3├── assets/Home.hash.js # 首页 chunk 4├── assets/About.hash.js # About 页面 chunk(懒加载) 5└── index.html

只有访问/about时,About.hash.js才会被加载。


总结

Route-level code-splitting in Vue 3就是通过() => import('...')实现路由组件的懒加载,让每个路由对应一个独立的 JS chunk,在访问时才加载,从而优化应用性能和用户体验。


如果你使用的是Vite + Vue 3 + Vue Router 4,这种写法开箱即用,无需额外配置!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 14:43:07

揭秘高效地址处理:如何用预置镜像10倍提升MGeo模型运行效率

揭秘高效地址处理:如何用预置镜像10倍提升MGeo模型运行效率 作为一名电商平台的数据工程师,我最近遇到了一个棘手的问题:本地服务器运行MGeo模型处理海量地址数据时速度太慢,严重影响了业务效率。经过多次尝试,我发现通…

作者头像 李华
网站建设 2026/6/15 0:17:09

从数据标注到上线:M2FP助力构建私有化人体解析SaaS平台

从数据标注到上线:M2FP助力构建私有化人体解析SaaS平台 🧩 M2FP 多人人体解析服务 (WebUI API) 在智能零售、虚拟试衣、安防监控和数字人内容生成等场景中,对人体结构进行精细化语义理解已成为关键基础能力。传统的图像分割技术往往局限于单…

作者头像 李华
网站建设 2026/6/12 15:16:26

零基础入门:用快马轻松学会数据库设计

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个面向初学者的交互式数据库设计学习应用。功能:1.分步引导完成简单数据库设计 2.实时错误检查和修正建议 3.内置常见设计模式示例 4.提供可视化关系图解释 5.支…

作者头像 李华
网站建设 2026/6/15 14:53:03

部署报错频繁?M2FP锁定PyTorch 1.13.1+MMCV-Full 1.7.1黄金组合

部署报错频繁?M2FP锁定PyTorch 1.13.1MMCV-Full 1.7.1黄金组合 📖 项目简介:M2FP 多人人体解析服务 在当前计算机视觉应用中,人体解析(Human Parsing) 正成为智能服装推荐、虚拟试衣、行为分析等场景的核心…

作者头像 李华
网站建设 2026/6/14 7:06:18

电商直播场景落地:M2FP实时解析主播着装生成商品标签

电商直播场景落地:M2FP实时解析主播着装生成商品标签 在电商直播迅猛发展的今天,如何高效、精准地将主播展示的服饰内容转化为可点击、可购买的商品标签,已成为提升转化率的关键环节。传统依赖人工标注或简单图像识别的方式已难以满足多主播、…

作者头像 李华
网站建设 2026/6/10 12:48:33

Z-Image-Turbo文化传承创新:传统年画风格数字化

Z-Image-Turbo文化传承创新:传统年画风格数字化 引言:AI赋能传统文化的数字新生 在数字化浪潮席卷全球的今天,如何让非物质文化遗产“活”起来,成为科技与人文交汇的重要命题。中国传统年画作为民间艺术的瑰宝,承载着…

作者头像 李华