vue 分模块运行、分模块打包

6 篇文章 0 订阅
3 篇文章 0 订阅

分模块打包目的

  • 每个模块可以单独运行及打包部署
  • 项目也可以整体打包

子项目配置

  • 在src目录下新建子项目名称,目录结构如下
recordSearchModule
  asset
  common
  components
  router
  store
  views
    页面
    login.vue 根据子项目情况可以共用项目的login页面
  App.vue
  main.js
  • 在config/project.config.js中添加子项目运行及打包配置项
  recordSearchModule: {
    pages: {
      index: {
        entry: "src/recordSearchModule/main.js",
        template: "public/index.html",
        filename: "index.html"
      }
    },
  }
  • package.json配置子项目运行及打包命令
  // VUE_APP_PROJECT_NAME名称与config/project.config.js中的模块名称需保持一致
  "serve": "vue-cli-service serve",
  "serve:record": "cross-env VUE_APP_PROJECT_NAME=recordSearchModule vue-cli-service serve",
  "build": "vue-cli-service build",
  "build:customer": "cross-env VUE_APP_PROJECT_NAME=customerCheckModule vue-cli-service build",
  • vue.config.js中配置子项目路径别名及添加子项目运行配置
const path = require("path");
function resolve(dir) {
  return path.join(__dirname, dir);
}
// 获取cross-env 配置的子项目运行命令
let projectName = process.env.VUE_APP_PROJECT_NAME;
const project = config[projectName] || {};
module.exports = {
  chainWebpack: (config) => {
    config.resolve.alias
      .set("recordPage", resolve("./src/recordSearchModule"))
      .set("customerCheckPage", resolve("./src/customerCheckModule"))
  },
  ...project
}
  • 配置子项目路由文件
// 抽离页面路由
const recordRoutes = [
    {
      path: '/taskRecord',
      component: (resolve) =>
        require([
          'recordPage/views/recordSearch/recordSearchList/taskRecord'
        ], resolve),
    }
]
// @是src的别名
// 子项目这里可以复用项目的页面,也可以使用子项目的页面
const router = new Router({
  mode: 'history',
  routes: [
    {
      path: '/',
      // component: login
      component: (resolve) => require(['@/views/login'], resolve),
      name: 'Login'
    },
    {
      path: '*',
      name: '404',
      hidden: true,
      component: (resolve) => require(['@/views/404'], resolve)
    },
    {
      path: '/nav',
      component: (resolve) => require(['recordPage/views/nav'], resolve),
      name: 'Index',
      children: recordRoutes
    },
  ]
});
  • main.js将process.env.VUE_APP_PROJECT_NAME挂载到Vue实例
/*
  在Vue文件中通过 this.$projectName获取
*/
const projectName = process.env.VUE_APP_PROJECT_NAME;
Object.assign(Vue.prototype, {
  $projectName: projectName
})

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
回答: 模块打包是一种将不同模块的代码打包独立的文件的方式。每个模块都有自己独立的入口文件和路由文件。在Vue项目中,可以通过在一个新的脚手架src目录下创建一个projects目录来实现模块打包。在每个小项目中,可以创建assets、common、views等文件夹,并别放置相应的资源文件和代码文件。同时,可以创建mApp.vue、main.js、router.js、store.js等文件来管理小项目的路由和状态。如果需要,还可以创建一个components文件夹来放置组件文件。这种方式可以方便地维护多个小项目,并实现它们的集成和独立运行。\[1\] 最近,我写了很多类似的小项目,每个项目都创建一个工程,这样维护起来有些不方便。因此,我决定将它们放在一个项目下进行模块打包。以vue-cli3+为例,可以实现多系统集成下的模块打包。这种方式适用于多个系统之间互不干扰的业务场景,主系统可以集成各个子系统,而各个子系统又可以单独运行。\[2\] 要实现模块打包,首先需要创建一个projects目录。然后,可以按照需要在每个小项目中创建相应的文件夹和文件,如assets、common、views、mApp.vue、main.js、router.js、store.js等。如果需要,还可以创建一个components文件夹来放置组件文件。这样,每个小项目都有自己独立的代码和资源文件,可以进行独立打包运行。\[1\] 如果想要将css和js文件打包进单独的HTML文件,可以在模块的文件中进行一些小的改动。具体的改动方式可以参考相关的文档或教程。\[3\] #### 引用[.reference_title] - *1* *2* [Vue大型项目之模块运行/打包](https://blog.csdn.net/CSDN_bare/article/details/123051549)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [vue 模块打包,附css、js打包进HTML方法](https://blog.csdn.net/nxm2012/article/details/120491815)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值