请教,多个vue项目,后台接口都是一样的,每个vue项目的同一个页面都只是一小部分修改,怎样把公共的代码提出来复用?
比如:project1,project2项目的所有页面都是一样的,project1/src/a.vue和project2/src/a.vue只有几行代码不一样,可以通过判断处理,a.vue的其他代码怎么复用?
请教,多个vue项目,后台接口都是一样的,每个vue项目的同一个页面都只是一小部分修改,怎样把公共的代码提出来复用?
比如:project1,project2项目的所有页面都是一样的,project1/src/a.vue和project2/src/a.vue只有几行代码不一样,可以通过判断处理,a.vue的其他代码怎么复用?
为了在多个 Vue 项目中复用公共代码,特别是当后台接口和页面大部分内容都相同时,你可以采取以下几种方法:
将公共的代码抽取到一个独立的 npm 包或 Git 子模块中。这个公共库可以包含组件、Vuex store 模块、API 请求函数等。
步骤:
示例:
# 创建一个新的 npm 包
npm init library my-vue-common-lib
# 或者克隆一个现有的 Git 子模块
git submodule add <repo-url> my-vue-common-lib
然后在各个项目中:
# 安装 npm 包
npm install my-vue-common-lib
# 或者更新 Git 子模块
git submodule update --init --recursive
如果多个项目使用相同的构建工具(如 Vue CLI),可以创建一个 Vue CLI 插件来注入公共代码。
步骤:
示例:
# 创建 Vue CLI 插件
vue create my-plugin
cd my-plugin
vue add plugin
# 按照提示创建插件
然后在各个项目中:
# 安装并使用插件
vue add my-plugin
对于只有小部分代码不同的页面,可以使用条件渲染和配置来处理不同的逻辑。
步骤:
v-if
或 v-else
来根据不同的条件渲染不同的部分。示例:
<!-- 公共组件 a.vue -->
<template>
<div>
<!-- 公共部分 -->
<p>这是公共部分</p>
<!-- 条件渲染 -->
<div v-if="isProject1">
<!-- Project1 特有的部分 -->
<p>这是 Project1 特有的部分</p>
</div>
<div v-else>
<!-- Project2 特有的部分 -->
<p>这是 Project2 特有的部分</p>
</div>
</div>
</template>
<script>
export default {
props: ['isProject1']
}
</script>
然后在各个项目中传递 isProject1
prop:
<!-- Project1 中的使用 -->
<template>
<a-vue :isProject1="true"></a-vue>
</template>
<!-- Project2 中的使用 -->
<template>
<a-vue :isProject1="false"></a-vue>
</template>
通过这些方法,你可以有效地复用多个 Vue 项目中的公共代码,同时处理不同项目中的小部分差异。
对于只有小部分代码不同的页面,可以使用条件渲染和配置来处理不同的逻辑
<!-- 公共组件 a.vue -->
<template>
<div>
<!-- 公共部分 -->
<p>这是公共部分</p>
<!-- 条件渲染 -->
<div v-if="isProject1">
<!-- Project1 特有的部分 -->
<p>这是 Project1 特有的部分</p>
</div>
<div v-else>
<!-- Project2 特有的部分 -->
<p>这是 Project2 特有的部分</p>
</div>
</div>
</template>
<script>
export default {
props: ['isProject1']
};
</script>
在各个项目中传递 isProject1 prop:
<!-- Project1 中的使用 -->
<template>
<a-vue :isProject1="true"></a-vue>
</template>
<!-- Project2 中的使用 -->
<template>
<a-vue :isProject1="false"></a-vue>
</template>
把公共的部分提取出来,封装成一个npm包,开放不同的部分的api接口自定义,就像二次封装组件库一样。这样每个项目都可以安装这个npm包,然后引入包使用即可。如果要开放成公共的npm包,建议编写完善的单元测试,如果只是公司私用,可以发私有npm包,单元测试建议也可以写上(方便后续其它用户使用,当然也可以不写),不过最好写上该包的使用方式。
至于具体的业务页面/组件的封装,那就要视你的具体需求而定了,比如用到的工具函数,可以写成lodash那样的包,组件写成组件包。
2 回答11.2k 阅读✓ 已解决
2 回答11.1k 阅读✓ 已解决
2 回答13.1k 阅读✓ 已解决
2 回答10.9k 阅读✓ 已解决
5 回答2.6k 阅读✓ 已解决
4 回答3.9k 阅读✓ 已解决
1 回答5.4k 阅读✓ 已解决
一个主分支作为公共部分,比如叫 main
从主分支新建分支作为实际的项目分支,比如 project1,project2
所有项目都要修改的部分在主分支上修改,然后再合入项目分支
某个项目内部的更改就在那个项目所在的分支修改