Vue大型项目之分模块运行/打包

最近写的小项目比较多,而且都是差不太多的,每个项目创建个工程,多少有点不好维护,所以决定把他们放在一个项目下,以vue-cli3+为例,实现多系统集成下的分模块打包。分模块打包方式多种多样,可以适用于多系统之间互不干扰,主系统可集成各子系统,各子系统又可单独运行的业务场景。

一、创建projects目录

分模块打包,那么各个模块内就必须得有自己独立的入口文件,路由文件。按照这种构想,需要在一个新的脚手架src目录下新建了一个projects目录:
在这里插入图片描述
如上图,可以看到Bproject、mcHd两个项目。可以在每个小项目中创建assets(包括img和css)、common(放公共组件或者方法)、views(放页面)的文件夹和mApp.vue、main.js、router.js、store.js(小项目中的路由之类)如果还需要文件夹专门用来放组件可以建一个components文件夹。(本项目比较小暂时不需要)
在这里插入图片描述

视图目录结构大概就是上面的样子,我们可以打包这个mcHd模块这个小项目下的页面,就像打包一个完整vue的项目一样。

二、更改vue.config.js文件

在项目最外层建立config文件夹,在其中新建projectsConfig.js写入:

const config = {
  mcHd: {
    pages: {
      index: {
        entry: "src/projects/mcHd/main.js",
        template: "public/index.html",
        filename: "index.html"
      }
    },
    devServer: {
      port: 8080, // 端口号
      host: "0.0.0.0",
      https: false, // https:{type:Boolean}
      open: false, //配置自动启动浏览器
      disableHostCheck: true,
      // 设置代理
      proxy: {
        "/": {
          target: "根据自己情况填写,
          changeOrigin: true,
          ws: false
        }
      }
    }
  },
  projectB: {
    pages: {
      index: {
        entry: "src/projects/Bproject/main.js",
        template: "public/index.html",
        filename: "index.html"
      }
    },
    devServer: {
      port: 8080, // 端口号
      host: '0.0.0.0',
      https: false, // https:{type:Boolean}
      open: false, //配置自动启动浏览器
      disableHostCheck: true,
      // 设置代理
      proxy: {
        "/": {
          target: "根据自己情况填写",
          changeOrigin: true,
          ws: false
        }
      }
    }
  },
};
module.exports = config;

然后在vue.config.js中代码如下

const config = require("./config/projectsConfig.js");
let projectName = process.env.PROJECT_NAME;

module.exports = {
  ...config[projectName],
  // pages: conf.pages,

  // 基本路径
  // baseUrl: './',//vue-cli3.3以下版本使用
  publicPath: "./", // vue-cli3.3+新版本使用

  // 输出文件目录
  outputDir: "dist/" + projectName + "/"
};

三、打包单个模块

在本项目中的package.json文件,有项目启动,打包的命令。可以在这配置每个项目的启动,打包命令
正常单个项目的文件是这样子的
在这里插入图片描述
那我们需要需要做的就是不同项目有不同的serve、build
这里需要用到cross-env这个模块

下载插件命令:npm install --save-dev cross-env

当我们执行打包命令的时候,通过cross-env去找到我们的入口文件,然后再进行打包。

所以我们可以模仿环境变量的写法,就可以设置每个项目的打包命令了。
代码如下

 "scripts": {
    "serve:mcHd": "cross-env PROJECT_NAME=mcHd vue-cli-service serve",
    "serve:projectB": "cross-env PROJECT_NAME=projectB vue-cli-service serve",
    "build:mcHd": "cross-env PROJECT_NAME=mcHd vue-cli-service build",
    "build:projectB": "cross-env PROJECT_NAME=projectB vue-cli-service build",
    "uat": "vue-cli-service build --mode uat",
    "pro": "vue-cli-service build --mode pro",
    "lint": "vue-cli-service lint"
  },

这样 每次想要启动哪个项目就可以输入哪个项目的命令啦
列如:npm run serve:mcHd
这样就实现了上图mcHd这个文件的页面的单独启动,也就实现了分模块打包。
下面贴一个mcHd页面文件的内容,可做参考
在App.vue中配置如下代码:

<template>
  <div id="app">
    <router-view />
  </div>
</template>

<style lang="scss"></style>

在main.js中配置如下代码:
下面的scss是一个公共文件样式 具体根据自己来定

import Vue from "vue";
import App from "./App.vue";
import router from "./router";
import store from "./store";
import "./assets/css/reset.scss";

Vue.config.productionTip = false;

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

在router.js中配置如下代码

import Vue from "vue";
import Router from "vue-router";
import Home from "./views/Home.vue";

Vue.use(Router);

export default new Router({
  routes: [
    {
      path: "/",
      name: "home",
      component: Home
    }
  ]
});

store.js 我这里没用到 为空

home.vue页面

<template>
  <div>
    11111
  </div>
</template>

<script>
export default {};
</script>

<style></style>

  • 13
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
回答: 分模块打包是一种将不同模块的代码分别打包成独立的文件的方式。每个模块都有自己独立的入口文件和路由文件。在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 ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值