vue之多项目|多工程共用相同组件的思路解读

 更新时间:2023年05月24日 10:04:42   作者:搬砖怪  
这篇文章主要介绍了vue之多项目|多工程共用相同组件的思路,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

项目场景

简单介绍一下目前的项目场景,目前我们有三个vue工程,就是三个vue项目,但是每个项目都有自己的基础组件库,但是这些自己封装的组件库都一样,都是CV过去的,但是现在产品不稳定,这些基础的组件库可能会总改,那么问题就来了,我每次难道都要改三遍吗?

那也太费劲了,所以研究了一下如何在多个vue项目共用一套基础建设的组件,这样我就改一次就行了,不需要改很多次了。

npm简介 

npm全称是node package management,接触过node知道,它是node的包管理工具,我们平时使用的npm install <安装的包名>,都是那些作者把自己的项目发布到Npm上,你才能够install安装它,我们这个场景也可以,我把公共的组件抽出来弄成一个工程,完了发布到npm上,以后用的时候直接npm install就可以了。但是我放弃了这个选择,因为每次改动都得改版本重新发布很麻烦。

npm文档

但是这里要介绍一下发布npm包需要配什么东西,后面会需要这里的配置。

  "name": "pub-fe"
  "version": "0.1.1" //项目版本
  "description": "包描述" //这个包的描述
  "main": "src/main.js", //入口文件,默认就是main.js
  "author": "wxs", //作者名字
  "repository": {  //npm去哪里拉去你的项目代码(这个后面没用上,)
     "type": "git",
     "url": "git+https://github.com/wangxueshun/pub-fe.git"
   }
``

具体配置

入口文件main.js

//main.js文件
import pubImp from "./packages/pubImp/index.js"
//先把公共组件放在这个数组里,这里举列子就写了一个,有多少个就在数组里放多少个
const components = [
  pubImp
];
//这里install方法主要是为了以后用vue.use()全局注册组件,因为是基础组件以后肯定常用,这样就不用每个页面都import了,这里不明白的建议百度。
const install = function (Vue) {//这个Vue参数,在Vue调用install方法的时候会把Vue传进去
  //这里循环调用
  components.forEach(component => {
    component.install(Vue);
  });
};
export default {
  install
}

pubImp文件

我的公共组件工程的结构

pubImp下的index.js文件

import myButton from './src/main.vue'
export default {
    install(Vue) {
        Vue.component("myButton", myButton)
    }
}

现在共用的包已经写好了,那么怎么样才能在别的工程那样直接引入到项目中呢?

npm link

在本地开发npm模块的时候,我们可以使用npm link命令,将npm 模块链接到对应的运行项目中去,方便地对模块进行调试和测试

1.先到我们的公共包pub-fe中执行npm link

这时候我们的pub-fe这个文件会被连接到全局。

2.在需要pub-fe的地方引入它,执行npm link pub-fe,我的项目是spp-fe所以我以这个为例子

这个时候pub-fe就会映射到spp-fe中的node_modules中,以快捷键的方式。

3.这个时候我们就可以跟引入别的第三方模块一样,引入我们的pub-fe.

使用npm link的又一点好处就是,你依赖的包有更新的时候,可以及时响应,不像在npm上发布的包,每次想下载最新的包都得npm install一下。

探究

那么我这么引入会不会对打包有影响呢?让我们来探究一下。

一、执行npm run serve

我们看一下研发环境的打包方式会造成什么影响,我就直接上引入Pub-fe之后的打包图片了。

可以看到打出来的包pub-fe里引入进来了,它里面也会有一些node_modules和它的一些依赖文件,对包的体积影响还是有的,但是这个研发环境的打包,webpack对研发环境的打包方式跟生产环境的打包方式是不一样的,所以这个体积大就大了,我所谓就自己用。

二、执行npm run build 生产环境的打包方式

让我们看看引入Pub-fe之后对打包的影响。

可以看到这次的pub-fe中依赖的node_modules跟我们的项目都服用上了,不像在研发环境中他俩是两套node_modules,所以这个对生产环境的打包影响近乎为零。

拓展

你可以通过这种方式进行多个工程共用同一个依赖,是最简单的方式,但这只适合小的团队使用。

你还可以用npm install +路径的方式 ,把需要依赖的项目装到node_modules里,但感觉这种没npm link好用,每次更新公共依赖的代码,都需要install一下。

你还可以把公共依赖发到npm上,这个是最正规的,但是我觉得太麻烦,如果团队大的话这么做我觉得挺合适的。

你还可以用npm install +git网址的方式,npm install 支持http,https.等等的方式,这里建议去看一下我最上面提到的Npm官网。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • vue实现计算器封装

    vue实现计算器封装

    这篇文章主要为大家详细介绍了vue实现计算器的封装,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • Vue中导入excel文件的两种方式及使用步骤

    Vue中导入excel文件的两种方式及使用步骤

    这篇文章主要介绍了Vue中导入excel文件的两种方式,大概有两种导入文件的方法:form表单和el-upload,本文结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-12-12
  • 手动实现vue2.0的双向数据绑定原理详解

    手动实现vue2.0的双向数据绑定原理详解

    这篇文章主要给大家介绍了关于手动实现vue2.0的双向数据绑定原理的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • vue项目中使用particles实现粒子背景效果及遇到的坑(按钮没有点击响应)

    vue项目中使用particles实现粒子背景效果及遇到的坑(按钮没有点击响应)

    为了提高页面展示效果,登录界面内容比较单一的,粒子效果作为背景经常使用到,vue工程中利用vue-particles可以很简单的实现页面的粒子背景效果,本文给大家分享在实现过程中遇到问题,需要的朋友一起看看吧
    2020-02-02
  • vue.js树形组件之删除双击增加分支实例代码

    vue.js树形组件之删除双击增加分支实例代码

    本文通过实例代码给大家讲解vue.js树形组件之删除双击增加分支功能,非常不错,具有参考借鉴价值,需要的的朋友参考下
    2017-02-02
  • Vue el-upload单图片上传功能实现

    Vue el-upload单图片上传功能实现

    这篇文章主要介绍了Vue el-upload单图片上传功能实现,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-11-11
  • 在vue项目中如何获取视频的时长

    在vue项目中如何获取视频的时长

    这篇文章主要介绍了在vue项目中如何获取视频的时长,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • vant自定义引入iconfont图标及字体的方法步骤

    vant自定义引入iconfont图标及字体的方法步骤

    因为vantUI给的图标非常少,为了满足自己的需求,就应该找到一种方法来向vant添加自己自定义的图标,对于自定义图标我第一时间想到的就是阿里的iconfont矢量图库,这篇文章主要给大家介绍了关于vant自定义引入iconfont图标及字体的方法步骤,需要的朋友可以参考下
    2023-09-09
  • element-ui el-select下拉框el-date-picker弹出框定位问题解决方案(推荐)

    element-ui el-select下拉框el-date-picker弹出框定位问题解决方案(推荐)

    项目开发过程中发现el-select和el-date-picker弹出框显示时候,滚动屏幕,导致弹出框定位出现问题,这篇文章主要介绍了element-ui el-select下拉框el-date-picker弹出框定位问题解决方案(推荐),需要的朋友可以参考下
    2024-07-07
  • vue实现移动端input上传视频、音频

    vue实现移动端input上传视频、音频

    这篇文章主要为大家详细介绍了vue实现移动端input上传视频、音频,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-08-08

最新评论