超完整版修改element ui源码的3种方式!!以及patch-package打补丁

这篇具有很好参考价值的文章主要介绍了超完整版修改element ui源码的3种方式!!以及patch-package打补丁。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

全文总览:
一、组件源码修改
    方式一:修改引入的lib文件
    方式二:拷贝组件文件进行修改引用
    方式三:修改原组件的packages文件
二.延伸——patch-package
​​网站的element文件可以在哪修改,ui,vue.js,前端,elementui,javascript

一.组件源码修改

项目需求多种多样,会出现当前组件无法满足需求的情况,可以分析组件源码对其进行一些定制化修改,以满足项目需求。

方式一:修改引入的lib文件

说明:

lib文件夹是组件打包编译后的文件夹,项目引入的是这个lib文件夹,所以直接修改其中对应代码后保存运行即可看到效果。

  • 需求:单日期控件日期图标移到右侧,鼠标悬浮展示清除图标
    网站的element文件可以在哪修改,ui,vue.js,前端,elementui,javascript

思路:将日期图标移到右侧可以使用css样式调整完成,但是组件需要支持鼠标悬浮替换右侧图标,下面开始对组件源码进行调整

修改步骤:

  1. 首先需要找到对应的组件文件夹node_modules/element-ui/packages/date-picker
  2. 查看picker.vue文件,找到其中需要修改的位置。

网站的element文件可以在哪修改,ui,vue.js,前端,elementui,javascript

这边动态样式为了判断展示time还是date图标,当我们把这个图标移到右侧后需要根据关闭图标showClose来判断是否展示。但是我们的项目是引入打包编译后的lib文件夹,所以修改 packages 里的组件是不生效的。

  1. 在lib文件找到date-picker.js中对应的位置进行代码调整。
    网站的element文件可以在哪修改,ui,vue.js,前端,elementui,javascript

  2. 代码如下修改完后保存运行即可看到效果。

/**********css:全局配置样式***********/
.el-date-editor{
    .el-input__inner{
        padding-left: 10px;
    }
    .el-input__prefix{
        left: initial;
        right: 5px;
    }
}

/*** js源码调整: node_modules/element-ui/lib/date-picker.js***/

将
_c("i", {
        staticClass: "el-input__icon",
        class: _vm.triggerClass,
        attrs: { slot: "prefix" },
        on: { click: _vm.handleFocus },
        slot: "prefix"
}),
替换为:
_c("i", {
        staticClass: "el-input__icon",
        class: [_vm.showClose ? "" : "" + _vm.triggerClass],
        attrs: { slot: "prefix" },
        on: { click: _vm.handleFocus },
        slot: "prefix"
}),
  • 需求: 日期范围控件日期图标移到右侧,鼠标悬浮展示清除图标
    网站的element文件可以在哪修改,ui,vue.js,前端,elementui,javascript
/**********css:全局配置样式***********/
.el-date-editor--daterange {
    .el-input__icon {
      position: absolute;
      right: 10px;
    }
 
    .el-input__icon.el-range__close-icon {
      position: absolute;
      right: 10px;
      z-index: 999;
    }
  }

/*** js源码调整:node_modules/element-ui/lib/date-picker.js***/
将 
 _c("i", {
            class: ["el-input__icon", "el-range__icon", _vm.triggerClass]
      }),
替换为:
 _c("i", {
            class: ["el-input__icon", "el-range__icon",_vm.showClose ? "" : "" + _vm.triggerClass],
    }),
方式二:拷贝组件文件进行修改引用

说明:

找到原组件文件进行拷贝,对于拷贝后的文件代码进行修改。这样引用后既可满足需求,又不会影响原组件的使用。

  • 需求:如下图所示上传文件后会展示上传文件的大小。

网站的element文件可以在哪修改,ui,vue.js,前端,elementui,javascript

修改步骤:

tips:下面是修改packages该如何处理,非lib文件。

  1. 首先找到对应的upload文件
    node_modules—》element-ui—》packages—》upload

  2. 然后在upload-list.vue中添加对应的代码
    网站的element文件可以在哪修改,ui,vue.js,前端,elementui,javascript

    // 文件大小换算
    formatBytes(a, b = 2) {
      if (a === 0 || !a) return ''
      const c = 1024
      const e = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']
      const f = Math.floor(Math.log(a) / Math.log(c))
      return parseFloat((a / Math.pow(c, f)).toFixed(b)) + ' ' + e[f]
    }
  1. 使用
    3.1 局部使用
    把修改后的upload文件复制一份,然后在需要使用的文件中引入、注册、使用
    网站的element文件可以在哪修改,ui,vue.js,前端,elementui,javascript
    3.2 全局使用
    3.2.1.修改upload文件夹中的index.vue中的name(否则还会走默认的element的upload)
    网站的element文件可以在哪修改,ui,vue.js,前端,elementui,javascript
    3.2.2.在main.js中引用注册就可以使用了
    网站的element文件可以在哪修改,ui,vue.js,前端,elementui,javascript
    网站的element文件可以在哪修改,ui,vue.js,前端,elementui,javascript
方式三:修改原组件的packages文件

说明:

修改原组件packages里对应的vue文件是不会生效的,项目引用的是编译后的lib文件。所以需要在官网上下载组件代码修改后重新打包生成lib文件,替换项目里的lib文件后原组件已经被修改。
注意:如果只是部分情况下引用组件需要修改,则不建议使用。

  • 需求:打开show-checkbox复选框时,根据每一节点数据判断是否显示复选框

网站的element文件可以在哪修改,ui,vue.js,前端,elementui,javascript
修改步骤:

  1. 进入element UI组件官网,从其GitHub上克隆一份代码
    网站的element文件可以在哪修改,ui,vue.js,前端,elementui,javascript
    网站的element文件可以在哪修改,ui,vue.js,前端,elementui,javascript

  2. 初始化依赖 。
    终端命令:npm i
    如果初始化失败报权限问题,可以执行命令给文件夹添加执行权限:
    chmod -R +x /home/hanware/ricky(文件所在地址)

  3. 然后在packages文件中找到需要修改的组件,进行调整
    网站的element文件可以在哪修改,ui,vue.js,前端,elementui,javascript

  4. 重新打包 npm run dist
    如果失败报权限问题,可以执行命令给文件夹添加执行权限:
    chmod -R +x /home/hanware/ricky(文件所在地址)

  5. 替换lib文件夹,将重新打包后生成的dist文件夹替换掉项目中
    node_modules下的elementui下的lib文件夹即可。运行即可看到效果

二.延伸——patch-package

定义: 用来给其他npm包打补丁的包
作用: patch-package打补丁,将修改同步到项目成员代码上

说明: 修改第三方库的代码,只在于我们自己的代码上,这改动需要同步到团队所有成员,比较麻烦,使用补丁可以解决这个问题。(以下操作在项目已修改成功基础上)

操作步骤:

  1. 终端命令安装 patch-package
    npm i patch-package --save-dev

  2. 修改根目录下的 package.json 文件
    在scripts中添加"postinstall": “patch-package”

  3. 创建补丁文件
    执行命令npx patch-package element-ui
    element-ui 指的是被修改的依赖包的名字,不是被修改的文件的名字
    执行该命令后会在项目根目录中自动创建一个 patches 文件夹,该文件夹中就会出现一个 修改依赖包名称+version.patch 的补丁文件。
    网站的element文件可以在哪修改,ui,vue.js,前端,elementui,javascript
    tips: 如果报SyntaxError: Unexpected token ‘.‘,可能是node版本过低导致,可以升级到16再次尝试

  4. 测试是否生效
    删除依赖后重新安装依赖可以看到修改的代码还在。

缺点:文章来源地址https://www.toymoban.com/news/detail-761583.html

  1. 存在一些兼容性问题,不同的依赖包可能使用不同的开发工具和构建系统,patch-package可能无法兼容所有的项目。
  2. patch是锁定版本号的,如果升级了版本,patch内容将会失效,最好在package.json能够锁定版本号。
  3. 如果有多个补丁文件,并且同时修改了同一个文件的不同位置,那patch-package可能会出现无法正确合并这些修改的情况。

到了这里,关于超完整版修改element ui源码的3种方式!!以及patch-package打补丁的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Element UI 系列 - 表单标签和输入框对齐以及修改输入框长度

    前言 elementui 文档中如何使表单的标签和输入框分别对齐 类似于这样的效果, 虽然 Elementui官方文档写的有, 但是因为我不经常写前端, 每次都会忘记, 这里记录下 官方文档 https://element.eleme.cn/#/zh-CN/component/form 如上图, 主要是通过修改 label-postion 对齐, 另外 label-width 是修改左侧标

    2024年02月11日
    浏览(27)
  • element-ui日历组件el-calendar选中特定时间以及样式修改

    项目开发中,有需要用到日历的组件,而且需要把某些日期标注起来,在这边标注的小红点我用了 el-badge 具体效果如下图所示:  页面标签: 变量声明: 样式修改: 参考地址

    2024年02月11日
    浏览(43)
  • element-ui时间日期选择器回显功能以及不能修改问题的解决

    地址:element-ui时间日期选择器不能修改问题的解决 - 走看看 属于是强制更改 编辑的时候,修改了时间,控制台中能看到已修改,可是页面上确没修改而且也不能删除,出现这样的问题,该如何解决? 解决方案:在获取数据回显的时候使用$set: 刚开始是直接赋值(如果不是标

    2024年02月11日
    浏览(32)
  • 【Vue-Element UI】三级表单可选框以及显示、修改和删除表单属性

    目录 三级表单可选框 静态界面 收集数据  获取数据 属性值内容显示  一些知识点 (1)Vue.nextTick() (2)$set (3) ref (4)一些数组方法 (5)深拷贝 (6)@blur 效果: 这里是后台管理系统的三级选择器, 只有当第一级分类选中属性时,第二个才能选,以此类推 。 Element 

    2023年04月08日
    浏览(32)
  • vue项目中修改element-ui源码,如何运用到项目中 (修改 node_modules 里的文件,并应用)

    由于element组件不满足项目的需要,需要对源码进行修改,如何在使用到项目中,发现直接修改源码以后不生效,原因是因为其实项目中所引用的并不是直接源码,而是通过打包好后的lib文件。源码只是相当于提供给你参考的,整个项目的运行,靠的都是lib文件夹下的打包文件

    2024年02月04日
    浏览(47)
  • 【vue2+element ui】添加修改共用表单的下拉框回显问题分析以及解决方案(附共用表单代码)

    简介 本人前端水平不佳,本文分享在编写个人项目前端代码的时候遇到的回显问题的解决办法,仅供参考。 问题复原 首先展示表单中的问题代码,本次前端的设计是添加和修改操作共用表单,但是其中有一个下拉框展示形式,按照惯例通过:value进行双向绑定,保证点击修改

    2024年02月07日
    浏览(33)
  • ubuntu22.04桌面完整版配置WiFi方法(修改磁盘文件方式--不需要显示器)

    打开这个文件: /etc/network/interfaces 一般来说这个文件是无法修改的,但是可以通过在/etc/network/文件夹找一个叫做interfaces.d的文件夹,(正常的Ubuntu系统跟这个树莓派的Ubuntu系统不一样,正常系统没有这个interfaces文件) 随便在这个文件夹里面建立一个文件例如net----注意了这个

    2024年02月06日
    浏览(34)
  • element ui修改表格悬停色

    第一种方法 第二种方法 注:第一种方法在右侧操作栏使用了固定后,操作栏的悬停色就无法改变了,可以使用第二种方法。其实在调试台可以看见,悬停时是给行加了一个hover-row的class名称。  

    2024年02月12日
    浏览(79)
  • 修改element-ui中Tabs标签页下划线默认颜色的方法以及为什么设置了.el-tabs /deep/ .el-tabs__nav-wrap::after不起效果

    类似图上的灰色线段,这是Tabs的默认样式, 在项目中的路径位置在:node_modules/element-ui/theme-chalk/tag.css   (我原本想在源文件直接改颜色的,但是找了一圈不知道哪个是他的颜色哈哈哈) 方法是: /deep/ 深度作用操作符:可以使样式作用的更深,例如影响子组件。 同时,

    2024年02月09日
    浏览(32)
  • 修改element-ui主题颜色

    方法1:创建一个公共的更改的CSS文件,在CSS文件里写入 $–color-primary:加颜色,最后在main.js中引入 方法2:借助在线主题生成工具,设置自己想要的颜色,下载主题,解压之后,在main.js 中引入 方法3:安装主题工具 1、安装主题工具 2、从 npm 安装theme 3、初始化变量文件 4、根

    2024年02月11日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包