如何将 Vite Vue Router 4 捆绑到同一个块中

Posted

技术标签:

【中文标题】如何将 Vite Vue Router 4 捆绑到同一个块中【英文标题】:How to bundle Vite Vue Router 4 into same chunk 【发布时间】:2021-09-11 07:15:05 【问题描述】:

使用 vue cli,您可以使用 web-pack 将 vue 路由块捆绑在一起

const routes: Array<RouteRecordRaw> = [
   path: '/', name: 'Home', component: Home ,
  
    path: '/login',
    name: 'Login',
    meta:  alreadyAuth: true ,
    component: () => import(/* webpackChunkName: "login" */ '../views/public/Login.vue')
  ,
   path: '/splash', name: 'Splah', component: Splash ,
  
    path: '/portal',
    name: 'Portal',
    meta:  requireAuth: true ,
    component: () => import(/* webpackChunkName: "portal" */ '../layouts/Dashboard.vue'),
    children: [
       path: '', component: () => import(/* webpackChunkName: "portal" */ '../views/portal/Portal.vue') 
    ]
  
]

我目前正在为一个项目使用 Vite。有没有办法将块(例如 Dashboard 和 Portal)捆绑在一起?

运行 nom run build 将为 Portal.js 和 Dashboard.js 生成单独的块文件

谢谢

【问题讨论】:

【参考方案1】:

为了能够动态加载视图,您必须按以下方式应用导入 () => import ('Module'),如果我们想要将其按组划分,则必须在 vite.config 中指定它。 [js,ts]我给你举个小例子

// routes.ts
const UserDetails = () => import('./UserDetails.vue')
const UserProfileEdit = () => import('./UserProfileEdit.vue')

const Dashboard = () => import('./Dashboard.vue')

const routes: Array<RouteRecordRaw> = [
  
    path: '/user-details',
    component: UserDetails
  ,
  
    path: '/user-profile-edit',
    component: UserProfileEdit
  ,
  
    path: '/dashboard',
    component: Dashboard,
  ,
]

// vite.config.ts
import  defineConfig  from 'vite'
import vue from '@vitejs/plugin-vue'
const path = require('path')

export default defineConfig(
  build: 
    rollupOptions: 
      // https://rollupjs.org/guide/en/#outputmanualchunks
      output: 
        manualChunks: 
          'user': [
            './src/UserDetails',
            './src/UserProfileEdit',
          ],
          'dashboard': [
            './src/Dashboard',
          ],
        ,
    ,
  ,
  plugins: [vue()]
);

如果您需要更多信息,可以查看 vue-router 文档:https://next.router.vuejs.org/guide/advanced/lazy-loading.html#grouping-components-in-the-same-chunk

【讨论】:

以上是关于如何将 Vite Vue Router 4 捆绑到同一个块中的主要内容,如果未能解决你的问题,请参考以下文章

vue3.0+vite+router搭建项目

vite+vue3+ts中的vue-router基本配置

Vite2+vue3+ts 使用 router,layout 搭建页面框架,并做页面自适应

Vite创建vue项目简单几步

vite 请求的模块 vue-router?

ts+vue3+vite+pinia+vue-router 踩坑合集