java项目如何对应页面找代码_如何实现跨项目代码复用

通常我们前端不仅仅只有一个项目,而是有多个项目同时开发,但是往往这多个项目之间代码有一些可以公用的地方,比如说我们的一些组件啥的,一般我们遇到相同的地方都是会直接选择复制,但是这样的问题也很明显,就是一个地方改了,要同时去修改其它的地方,这样显然不太合理,没有达到复用的目的。所有关于这样的情况要想代码复用,我比较推荐使用npm的形式进行管理我们的代码。

首先我们创建两个项目project1和project2

vue create project1

vue create project2

复制代码

然后我们需要在src目录下面建一个npm发包的目录叫做BaseUI即可,然后进入这个文件执行npm init 初始化一下包名称和版本等详细信息。然后我们通常会定义以下文件:

lib // 这个目录下面放组件文件

.npmignore // 这是忽略文件的

README.md // 这是项目说明文档

package.json // 这是包的信息描述

复制代码

注意,我们的项目和npm发包的文件是写在一起,目的就是为了就近管理,因为通常我们的组件会进行多次的修改,通常我们写的是业务组件,并不像element-UI组件一样那么稳定,所以为了方便就没有相互独立开来,但是我们可以通过git subtree命令,通过分支来管理文件,这样同样可以达到我们的目的:

git subtree push --prefix src/BaseUI origin base-npm

复制代码

上面这个命令就是把项目中的src/BaseUI目录下的所有文件推送到了base-npm分支,我是自master分支上直接把指定的文件夹推送到指定的分支,所以每次项目改了你只需要重新把代码推送到发包的分支就可以了。

然后切换到发包分支base-npm执行发包的命令,npm login登陆完成执行npm publish完成。你也可以不把发包的目录独立的抽离到单独的分支里面,而是直接每次进入到发包目录里面去执行发包的操作。

这个时候可以在项目2中安装我们的npm包,组件就可以导入进来使用了:

单独引入某个组件

import BaseButton from 'base-ui/lib/BaseButton'

复制代码

我们组件都在lib里面,也可以配置按需加载,需要babel插件支持

import { BaseButton } from 'base-ui'

复制代码

安装babel插件,npm install babel-plugin-import --save-dev,然后修改 .babelrc 文件。

[

"import",

{

"libraryName": "base-ui", // 指向你的组件库名称

"camel2DashComponentName": false, // default: true 取消大小写转化

}

]

复制代码

现在只共享来项目1的组件给项目2用,如果项目2的组件也想给项目1用,也需要和上面同样操作,在项目里面定义一个发包目录,把文件单独抽到一个分支里面,然后执行发包的操作。

那么为什么多个项目要定义成多个包呢?定义成一个包不行吗?放到一个git仓库管理也可以呀!这样确实可以,但是如果把发包目录独立于项目,最大的问题还是如果要改某个组件,需要在发包目录里面改,改完之后把包发上去,然后再到项目中把包安装上看下效果,然后再不行就再改再继续发包,这样是非常繁琐的。

所以建议的是一个项目里面使用的源文件,一个项目里面使用的是包,这样来达到共享的目的,而不是两个项目里面都同时去使用包。

我的测试项目地址:GitHub地址连接

b739ec46bb5c46d9c0aa4ce35ba1ea56.png

关于找一找教程网

本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。

本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。

[如何实现跨项目代码复用]http://www.zyiz.net/tech/detail-143368.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值