为什么要拆?

  • 很多情况下,我们的项目文件+组件数量大于100
  • 涵盖的业务模块很多 用户管理、财务管理、XX管理。。。
  • 项目参与的人也多 2个 3个 5个 20个
  • 各种原因需要拆出模块来单独使用

    模块化实现

    1. 创建模块目录

  • 目录名规则 /src/module-xxxx 写你的业务模块名称

  • api interface 独立放在你的 module-xxxx
  • pages 放页面
  • 一个页面一个文件夹 /src/module/pages/index/index.vue 默认页
  • 页面中的组件放在 index.vue 同层 components 目录下

image.png

2. 编写模块路由

文件 /src/module-user/pages/router/index.ts

  1. import Layout from '../pages/layout.vue'
  2. export default [
  3. {
  4. path: '/',
  5. redirect: '/user/index'
  6. },
  7. {
  8. path: '/user',
  9. component: Layout,
  10. children: [
  11. {
  12. name: 'index',
  13. path: 'index',
  14. component: () => import('../pages/user/index.vue')
  15. }
  16. ]
  17. }
  18. ]

3. 编写模块入口

文件 /src/module-user/index.ts

import Router from '@/router'
import RouteConfig from './router'

export default class User {
  public static install(router: typeof Router): void {
    router.addRoutes(RouteConfig)
  }
}

4. 主程序载入模块

文件 /main.ts

...

import Element from 'element-ui'
import './scss/element-ui/element-variables.scss'
Vue.use(Element)

import User from '@/module-user'
User.install(router)

new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')

动态载入业务组件的 路由store 对象。