关于vue多个项目的管理

2023-11-14

环境:

vueCli + webpack

应用场景:

一套代码需要支持10几家客户,每家的皮肤,功能都有一些小的差异,主体流程大致是一样的。

思路:

在一个vue的服务中管理多个项目,各项目的功能模块相对独立,但公共部分可以提取为公共组件,并在多个项目之间进行调用

实现方法:
一、项目结构:

src文件夹下创建各项目的文件夹,并在项目文件夹中创建assetscomponentsrouterstoreview,并将App.vue(页面入口文件)、main.js(程序入口文件)、index.html(模板入口文件)放入到各项目文件夹中,在src的目录下保留assetscomponentsview文件夹来存放各项目之间公用的资源、组件和界面;如下图:
在这里插入图片描述

二、修改相关配置文件:

通过修改相关配置文件,来达到差异化编译的目的;
1、修改package.json文件
这里使用到了环境变量cross-env;

{
	// 我们在编译时输入对应的命令,如:npm run dev:one ,就可以传入相应的环境变量
	"scripts": {
	    "dev:one": "cross-env ENTRY=one webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
	    "build:one": "cross-env ENTRY=one node build/build.js",
	    "dev:two": "cross-env ENTRY=two webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
	    "build:two": "cross-env ENTRY=two node build/build.js",
	    "dev:three": "cross-env ENTRY=three webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
	    "build:three": "cross-env ENTRY=three node build/build.js",
	    "unit": "jest --config test/unit/jest.conf.js --coverage",
	    "e2e": "node test/e2e/runner.js",
	    "test": "npm run unit && npm run e2e",
	    "lint": "eslint --ext .js,.vue src test/unit test/e2e/specs"
	  }
	  ...
  }

2、修改webpack.base.conf.js文件
修改入口文件路径和项目中引用资源、组件时使用的路径的别名,如下图:
在这里插入图片描述
3、修改webpack.dev.conf.jswebpack.prod.conf.js文件
修改入口模板html文件,如下图:

webpack.dev.conf.js在这里插入图片描述
webpack.prod.conf.js

在这里插入图片描述
4、修改config/index.js
修改编译后的文件在dist目录下的结构,如下图:
在这里插入图片描述
5、项目中组件和资源的引用

	// 引用公共组件
	import ruleTitle from 'src/components/RuleTitle'
	// 引用当前项目下的组件
	import ruleContent from '@/componentsDif/RuleContent'

6、运行项目或编译
执行命令:npm run dev:onenpm run build:one

总结:

总而言之,核心思想就是跟进编译命令传入环境变量,利用环境变量和别名的配置来差异化打包。比较难的是如何控制组件的颗粒度,如何拆分组件,这个需要跟据需求的不同来实际定制。

参考文档:https://segmentfault.com/a/1190000015424032、https://www.jianshu.com/p/4522f4ee2350

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于vue多个项目的管理 的相关文章

  • vue项目重复点击一个路由会报错如何解决

    在新版本的vue router中 重复点击同一个路由会出现以下报错 这个问题时vue router 3 2 0版本的一个小Bug 方法有很多 比如降低路由版本 不推荐 但是推荐下面这种方式 比较简单靠谱 把这段代码直接粘贴到router i
  • openssl websockets

    1 HTTPS通信的C 实现 知乎 GitHub Bwar Nebula Nebula is a powerful framwork for building highly concurrent distributed and resili
  • 数据结构括号匹配问题 C语言

    数据结构中 括号匹配问题可以说是一个非常经典的问题 问题描述 假设一算术表达式中包括三种括号 圆括号 和 方括号 和 花括号 和 且三种括号可按任意次序嵌套使用 试编写程序判定输入的表达式所含的括号是否正确配对出现 提示 表达式可以存入一个
  • 毕业设计 树莓派口罩佩戴检测系统设计与实现 - 单片机 物联网 机器视觉

    文章目录 0 前言 1 简介 2 主要器件 3 实现效果 4 硬件设计 树莓派4B 5 软件说明 Debian Pi Aarch64 树莓派操作系统 vnc 远程连接树莓派 opencv 摄像头人脸数据采集 人脸数据显示等 6 部分核心代码
  • 如何理解遗传算法中的编码与解码?以二进制编码为例

    文章目录 前言 编码 解码 补充 前言 遗传算法的编码方法各种各样 但二进制串编码方式是最经典的一种 那么它的编码和解码该如何进行呢 或许本博客能给你一个具有参考价值的答案 编码 经典遗传算法中使用 染色体 来代指个体 它由二进制串组成 如
  • 考研算法辅导课总结-持续更新中

    这考研算法辅导课总结 建议根据大标题和题号来刷题 排序和进位制 3375 成绩排序 3376 成绩排序2 3373 进制转换 3374 进制转换2 链表和日期问题 66 两个链表的第一个公共节点 3756 筛选链表 3757 重排链表 36
  • 【转】QT中QWS的含义

    QT编程和文档中的术语QWS的全称是Qt windows system 是QT自行开发的窗口系统 体系结构类似X Windows 是一个C S结构 由QWS Server在物理设备上显示 由QWS Client实现界面 两者通过socket
  • 原型设计都有哪些好用的软件?

    原型图的设计软件只多不少 许多新人设计师都不知道怎么样在这些琳琅满目的选择中找到适合自己的 而且也不清楚主流软件究竟是哪些 接下来 本文将主要为大家介绍这方面知识 其实原型图设计有许多软件工具可选择 具体选择哪一款软件还是要取决于原型所需的
  • 计算机中cpu是指什么意思,CPU是什么?CPU又是什么意思?

    在我们的生活中经常会听说CPU这个词 但你可知道CPU是什么意思 其实还有很多朋友不知道CPU是什么意思的 下面我们就来说说CPU到底是什么东西 CPU是英文 Central Processing Unit的缩写 Central Proce
  • poi解析Excel文件版本问题

    poi解析Excel文件时有两种格式 HSSFWorkbook格式用来解析Excel2003 xls 的文件 XSSFWorkbook格式用来解析Excel2007 xlsx 的文件 如果用HSSFWorkbook解析Excel2007 x
  • 分析Python招聘数据,可视化展示招聘信息详情

    前言 一 数据来源分析 1 明确需求 明确采集网站以及数据内容 数据 职位信息 网址 https we 51job com pc search keyword python searchType 3 sortType 0 metro 2 抓
  • 亚信实习第一周

    自从上周五 怀着激动 忐忑的心情来到亚信报到之后 截止到今天 正好上了一周班 对这一周做了什么 进行一下回顾 周一 因为第一天上班 所以起了个大早 来到公司时才八点多一点 九点才上班 由于是第一天上班 就是看了看公司现在做的项目是什么 总体
  • 运行python报错ImportError: Unable to import required dependencies: numpy

    真是气死了 之前在VsCode上用jupyter写python好好的 过了一段时间没写python 今天再一打开运行python代码就出错了 一开始是报的这个错 Error loading preloads Could not find r
  • 串口中断怎么触发两次_“中断”-嵌入式的灵魂

    最近个人情绪不是很好 断了好几天 今天试着恢复每日一更 今天给大家讲一下 中断 一个让我刚开始接触单片机头疼的概念 我相信也是很多初学者头疼的地方 之所以头疼只是因为他太过于抽象 本章我用形象的举例来给大家讲出来 注意 本章节我用Ardui
  • 如何使用nodejs快速搭建本地服务器

    1 首先要安装好node js 2 以下有安装包下载的链接 这里的安装包是 msi 如果要其他的 可以到菜鸟教程上去找 32 位安装包下载地址 https nodejs org dist v4 4 3 node v4 4 3 x86 msi
  • 【Ubuntu】vscode配置PCL库/vscode无法导入PCL库

    问题 PCL库是ROS框架自带的点云处理库 可以通过find package PCL REQUIRED 在CMakeLists txt中导入 但是vscode却无法识别 出现问题如下 注意 本文解决方案仅限Ubuntu 解决方案 打开工程路
  • 如何调用股票交易软件api接口?

    随着人们的生活水平越来越高 人们可以通过公司的股票交易软件api接口来查询股票 也可以用股票交易软件api接口来了解股市 采用正规的界面可以确保数据的准确性 及时的根据股价的涨跌幅度做出一些选择 所以公司所用的股票交易软件api接口非常重要
  • 2019年蓝桥杯省赛-数的分解

    题目 题目链接 题解 DFS 一定看清要求 3 个 不同 正整数 正整数中不能包括2和4 满足加法交换律的算式属于一种情况 代码 include
  • ArtDialog简单使用示例

    像dojo一样 artdialog也是在网上无意间搜出来的 可惜后来发现它和dojo冲突 最后都是用的dojo的dialog 没办法只有忍痛割爱了 今天花了些时间把http code google com p artdialog downl

随机推荐

  • Linux配置每次重启会自动挂载的共享文件夹

    1 前言 配置共享文件可以实现Window与Ubuntu文件共享 2 添加共享文件夹 打开虚拟机设置 选项 gt 共享文件夹 gt 总是启用 gt 添加 gt 选择文件夹 gt 确定 3 访问共享文件夹 在Ubuntu中访问该共享文件的路径
  • java怎么读取数据_java怎么读取数据

    java怎么读取数据 1 从控制台读取数据 使用Scanner类来读取控制台的输入 推荐教程 java教程 public static void main String args Scanner in new Scanner System
  • Matlab工作区介绍

    Matlab工作区介绍 Matlab工作区 Matlab Workspace 是Matlab软件中的一个重要概念 它是一个存储在内存中的临时存储区域 用于存储和管理当前会话中的变量和数据 在工作区中 可以创建 修改和操作变量 进行数据分析和
  • qt 获取文件夹中文件名

    bool TerminalCommand command cleancache QString path QDir dir path QFileInfoList f list dir entryInfoList dir setFilter
  • 2023年最新React面试题

    以下是一些常见的React面试题 包括代码详解 这些问题涵盖了React的基础知识和常见的开发场景 请注意 这些问题的答案可能有多种方式 下面给出的是其中一种解决方案 1 什么是React React是一个用于构建用户界面的JavaScri
  • LeetCode 22. 括号生成 Generate Parentheses(C语言)

    题目描述 给出 n 代表生成括号的对数 请你写出一个函数 使其能够生成所有可能的并且有效的括号组合 例如 给出 n 3 生成结果为 题目解答 方法1 回溯算法 for循环 递归 记录当前用的左括号数目bef及未成对的左括号数目single
  • (UE4 4.20 )UE4的GC(垃圾回收)编程规范

    UObject系统的GC UPROPERTY 引用 当我们在一个UObject类声明各种继承UObject的 变量时 得加UPROPERTY 这个可以让UE4帮我们自动管理UObject的垃圾回收 UPROPERTY不仅仅用于反射变量到编辑
  • C++智能指针-shared_ptr/weak_ptr

    熟悉了unique ptr 后 其实我们发现unique ptr 这种排他型的内存管理并不能适应所有情况 有很大的局限 如果需要多个指针变量共享怎么办 如果有一种方式 可以记录引用特定内存对象的智能指针数量 当复制或拷贝时 引用计数加1 当
  • jQuery一级菜单和二级菜单

    1 先做一级菜单 第一步设置body 把大概样子写出来 2 第二步 1 用css设置通配符 3 第二步 2 设置ul标签基础样式 4 第二步 3 设置类样式 5 设置jquery内容的第一步先引入jQuery文件 6 第二步设置一个函数在里
  • CTP程序化交易入门系列之四:行情订阅常见问题解答

    前言 这一章总结了大家订阅行情最常问的一些问题的相关解答 希望能有帮助 如有不对的地方 欢迎指正 后期会在这里更新迭代 欢迎到这底下提问 更新时间 20201112 1 获取行情的地址在哪里可以查到 simnow发的即是实时行情 官网上可以
  • kettle用Rest Client发送http请求

    kettle用Rest Client发送http请求 kettle用add join xml组装复杂的xml报文 kettle配置及性能调优 需求 请求一个服务接口 请求体是一段 json 服务接口响应数据 数据也是 json 形式 这里用
  • 蓝桥杯单片机零基础到国二经验分享

    我参加的是第十三届蓝桥杯大赛 从最开始的零基础 毫无头绪 到拿下国二 颇有体会 在这里将我的备赛经验分享给大家 希望可以帮到一些正在备赛的蓝桥杯er 目录 一 蓝桥杯 单片机组介绍 二 零基础到国二历程 客观题 程序题 1 从零基础到省三
  • 前端DOM操作精解:基础概念、方法与最佳实践

    引言 本文将深入探讨前端开发中的DOM操作 包括基础概念 常用方法和最佳实践 通过清晰易懂的解释和实际案例分析 我们将一起了解如何最有效地使用DOM操作来提升前端应用的用户体验 一 DOM操作入门 在深入探讨DOM操作之前 我们先要理解什么
  • SpringBoot的默认日志框架

    logback日志的集成 总结 1 SpringBoot底层也是使用slf4j logback的方式进行日志记录 a logback桥接 logback classic 2 SpringBoot也把其他的日志都替换成了slf4j a log
  • flutter iOS和安卓的version,build区别

    iOS的version是关键的 build次数不重要 version要大于上一个 build叠加就好 version加1后 build可以从头开始 开发者后台提审的版本号要跟提交的版本号要一致 安卓的就不是了 最重要的是build次数 每次
  • 【算法】解密回文——栈

    上一节中我们学习了队列 它是一种先进先出的数据结构 还有一种是后进先出的数据结构它叫做栈 栈限定只能在一端进行插入和删除操作 比如说有一个小桶 小桶的直径只能放一个小球 我们现在向小桶内依次放入2号 1号 3号小球 假如你现在需要拿出2号小
  • URI、URL和URN的定义和关系

    1 URI URI Universal Resource Identifier 统一资源标志符 URI采用一种特定语法标识一个资源的字符串 所标识的资源可能是服务器上的一个文件 不过 也可能是一个邮件地址 新闻消息 图书 人名 Intern
  • PostgreSQL服务启动时报错:“FATAL: could not create lock file "/tmp/.s.PGSQL.5432.lock": Permission denied”

    PostgreSQL服务启动时报错 FATAL could not create lock file tmp s PGSQL 5432 lock 权限不够 PostgreSQL服务启动时报错 FATAL could not open loc
  • Linux一分钟部署dist

    1 首先保证服务器要有tomcat安装包 如果没有的话 访问http tomcat apache org 选择版本号下载 格式要tar gz的就可以 2 上传安装包并解压 3 运行 解压之后cd切到tomcat目录下面的bin目录 star
  • 关于vue多个项目的管理

    环境 vueCli webpack 应用场景 一套代码需要支持10几家客户 每家的皮肤 功能都有一些小的差异 主体流程大致是一样的 思路 在一个vue的服务中管理多个项目 各项目的功能模块相对独立 但公共部分可以提取为公共组件 并在多个项目