当前位置: 首页 > news >正文

制作一个项目用于研究elementUI的源码

 需求:修改el-tooltip的颜色,发现传递参数等方法都不太好用,也可以使用打断点的方式,但也有点麻烦,因此打算直接修改源码,把组件逻辑给修改了

 第一步下载源码

源码地址

GitHub - ElemeFE/element: A Vue.js 2.0 UI Toolkit for Web

第二步,创建vue项目

使用vuecli创建vue项目,在src下面创建element-ui文件夹,把上面源码的packages文件夹和src文件夹放入elementui中

第三步,处理导入问题

把复制的源码中引入element-ui的源头指向本地的源码内容,需要修改vue.config.js文件

const { defineConfig } = require('@vue/cli-service')
const path = require("path");
module.exports = defineConfig({
  configureWebpack: {
    resolve: {
      alias: {
        "@": path.resolve(__dirname, "src"),
         // "element-ui": "2.14.1",
        "element-ui": path.resolve(__dirname, "src/element-ui"),
      },
    },
  },
  transpileDependencies: true
})

第四步,在main.js中引入

由于上面修改了vue.config.js,这里使用的element-ui都是本地的内容

import Vue from 'vue'
import App from './App.vue'
import ElementUI from 'element-ui/src/index';
import 'element-ui/packages/theme-chalk/src/index.scss';
Vue.config.productionTip = false
Vue.use(ElementUI)
new Vue({
  render: h => h(App),
}).$mount('#app')

第五步,解决报错

源码中未使用的变量等其他内容,在npm run serve的时候会报错,所以要关掉。在packages.json文件中的eslintConfig写入下面的rules,关掉提示

"rules": {
      "no-console": "off",
      "no-debugger": "off",
      "no-extra-semi": "off",
      "no-unused-vars": "off",
      "no-undef": "off",
      "no-prototype-builtins": "off",
      "no-useless-escape": "off",
      "vue/multi-word-component-names": "off",
      "vue/no-mutating-props": "off",
      "no-empty": "off",
      "vue/no-unused-components": "off",
      "vue/no-side-effects-in-computed-properties": "off",
      "vue/no-use-v-if-with-v-for": "off",
      "no-case-declarations": "off",
      "vue/return-in-computed-property": "off",
      "vue/valid-v-model": "off"
    }

第六步,包的处理

源码中有些地方引入了包/依赖,需要安装一下才能使用源码,这里可以直接复制下面的内容,然后重新npm i

"dependencies": {
    "async-validator": "~1.8.1",
    "core-js": "^3.8.3",
    "deepmerge": "^1.2.0",
    "normalize-wheel": "^1.0.1",
    "resize-observer-polyfill": "^1.5.0",
    "throttle-debounce": "^1.0.1",
    "vue": "^2.6.14"
  },
  "devDependencies": {
    "@babel/core": "^7.12.16",
    "@babel/eslint-parser": "^7.12.16",
    "@vue/cli-plugin-babel": "~5.0.0",
    "@vue/cli-plugin-eslint": "~5.0.0",
    "@vue/cli-service": "~5.0.0",
    "eslint": "^7.32.0",
    "eslint-plugin-vue": "^8.0.3",
    "sass": "^1.35.2",
    "sass-loader": "^10.1.1",
    "vue-template-compiler": "^2.6.14"
  },

 之后直接使用组件的内容,而且还可以直接修改源码就能看到效果。便于研究源码内容和运行原理

http://www.dtcms.com/a/17330.html

相关文章:

  • DeepSeek教unity------MessagePack-05
  • Nginx实战_高性能Web服务器与反向代理的配置全解
  • 张弛语言课退费动漫配音与人物的深度剖析退费
  • 天童美语:观察你的生活
  • ROS学习
  • 2. 图片性能优化
  • Postman入门:环境变量和全局变量
  • Labview课程2:通过S7.net读取西门子PLC中变量并绘图
  • 【鸿蒙开发】第三十六章 状态管理 - (V2)
  • 单细胞学习(12)——RunUMAP() 详解学习笔记
  • 基于Qlearning强化学习的1DoF机械臂运动控制系统matlab仿真
  • 科普:“数据”与“元数据”
  • 双指针思想
  • ELK架构基础
  • 往年5级考题(c++)
  • 【spring cloud 3.0微服务部署】第一章:Nacos、LoadBalancer、GateWay、Ribbon集成之Nacos部署
  • stable diffusion 文生图流程
  • Vim操作笔记
  • 【BUG】conda虚拟环境下,pip install安装直接到全局python目录中
  • Java 语言深度剖析与实践应用
  • 字节Trae使用感想(后端)
  • 若依系统环境搭建记录
  • 基于SSM+uniapp的数学辅导小程序+LW示例参考
  • 【mysql】记一次mysql服务挂了后的数据恢复过程
  • FPGA与传统硬件开发:开发流程与效率对比
  • spring 学习 (注解)
  • 图神经网络简介
  • C37.【C++ Cont】二叉树的存储方式和四种遍历
  • stm32 lwip tcp服务端频繁接收连接失效问题解决(tcp_recved)
  • 基于单片机的仓库安防系统(论文+源码)