elementUI 源码-打造自己的组件库,系列一:经典永不过时(先上车)

这篇具有很好参考价值的文章主要介绍了elementUI 源码-打造自己的组件库,系列一:经典永不过时(先上车)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

先上车

1、本着够用的原则,这个源码系列,先易后难(狗头,难的我也不会)。先不讲element build目录下工程化的配置,这些等用到的时候再说,先从组件源码,样式规范一点点铺展开来。先上车,后买票
2、既然是一个系列,争取做到详细,包括主要组件、重要函数、关键配置、测试脚本,以及编写对应开发文档。
3、虽然vue3已经逐步取代了vue2,新的UI框架也款款而来,但不妨碍elementUI依然作为我心中的最佳,每每阅读总有源源不断的知识点可以学习,经典永不过时
希望我能坚持下去

背景

使用了elementUI也有两三年了,但好像从没有认真阅读过elementUI的官方文档,只是用到的时候翻一翻,源码更没有看过。机会来了,终于睡服领导,同意打造公司的组件库(其实又是一次大型的粘贴复制)。
领导本着凡事三板斧的原则,必要问个所以然。答案必然要备好,免得打脸。
1、为什么要打造自己的组件库?
答: 项目中,大量需要针对elementUI的样式进行二次修改,开发效率低。项目满眼的/deep/,满眼的泪
2、开发组件库有何收益?
答:通过开发组件库,实现相似产品线的整合,实现产品UI风格的统一
3、开发组件的人力投入如何?
答:分为两期,一期2人月,基本完成对原有组件的样式修改和文档补充;二期2人月,新增图形、复杂表格等组件

发车了

老规矩,Ctrl c\Ctrl v

从github上下载elementUI的源码,我的版本是2.15.7

项目结构总览

目录 内容
build 工程化相关配置和脚本(越到后越感叹element的工程化程度如此之高)
examples 官方文档项目(没想到elementUI官方文档也在组件库中,厉害,原谅我这碗水太浅)
lib 组件库打包后生成的文件(执行npm run dist即可生成)
packages 组件库源码(各组件源码都在该目录,样式文件在theme-chalk中)
src 封装的公共方法和指令
test 测试脚本
types 定义组件的类型

package.json简单介绍

命令 作用
dev 启动组件库的本地开发环境,npm run dev,生成组件库的开发文档
dev:play 启动组件测试项目,npm run dev:play,用于验证开发的组件
dist 构建组件库, 生成lib文件,通过npm引入elementUI,就是使用lib中的内容

如何二次开发?

基本流程

1、npm i 安装项目依赖
2、修改build/webpack.demo.js中的host路径,注释掉 // host: ‘0.0.0.0’
3、在 examples/play/index.vue 中引入组件库中的任意组件
4、执行npm run dev:play
5、浏览器打开 http://localhost:8085 就可以进入组件测试页面

二次开发哪些内容?

1、自定义一套新的UI样式、多套主题颜色、支持一键换肤
2、自定义组件名称,将所有以el开头的组件,改成以ld开头,如按钮组件变为ld-button
3、新增复杂表格组件、图形组件、关系图谱组件等等
4、引入自己的图标库,图标库要支持彩色图标,同时兼容elementUI本身的图标
5、结合公司业务,修改多个组件的交互逻辑,如级联组件、下拉框组件、tree组件等等
6、……

自定义主题颜色

1、打开packages/theme-chalk/src/common/var.scss
该文件定义组件库统一的色板与样式。各样式分类清晰,方便各组件统一引用,为后期的换肤打好基础。
2、修改各主题色:
$–color-primary、$–color-success、$–color-warning、$–color-danger、$–color-info
3、按照新的UI修改色板中的其他颜色,尽量先不要删除色板中变量,以免造成编译失败
4、非常好用Mix()函数
作用:
Mix函数是将两种颜色根据一定的比例混合在一起,生成另一种颜色。$color-1 和 $color-2 指的是需要合并的颜色,$weight 为合并的比例,默认值为 50%
语法如下:

mix($color-1,$color-2,$weight)
@debug mix(#f00, #00f, 25%) // #4f00bf

5、elementUI为何要使用Mix函数?
通过Mix函数,可以实现定义一套样式规则,实现了UI色板规则的统一
组件颜色有各种状态,比如hover、focus、active等
以primary主题色为例:
hover颜色:$–color-primary-hover: mix($–color-white, $–color-primary, 20%) --白色与主色混入
active颜色:$–color-primary-active: mix($–color-black, $–color-primary, 20%) --黑色与主色混入
这样success、warning、danger、info等主题色都可以按照这个混入规则生成对应状态的颜色yyds

自定义组件名前缀

将所有以el开头的组件,改成以ld开头
以button按钮组件为例,标签名变为ld-button
1、打开packages/button/src/button.vue
将template模板中,将class所有el开头的替换成ld,注意el-icon开头的class不要替换(这是element的图标名)。export default中 name: ‘ElButton’ → name: ‘LdButton’
2、打开packages/theme-chalk/src/button.scss
将所有以el开头的class类名替换成ld,同样el-icon开头的class不要替换
3、打开packages/theme-chalk/src/mixins/config.scss
将$namespace: ‘el’ 替换成 $namespace: ‘ld’
4、打开examples/play/index.vue
引入ld-button组件

<ld-button type="primary">默认按钮</ld-button>

5、npm run dev:play,打开http://localhost:8085 页面,即可看到新生成的ld-button按钮组件

到达第一站

到这里铁子们已初步了解elementUI源码架构和基本开发步骤。说不多说,开始着手打造自己的组件库吧。
下一篇将讲解 elementUI 源码系列二:BEM实现 Sass语法 Css编码规范 ,我们继续发车

参考链接

如何快速为团队打造自己的组件库(上)—— Element 源码架构
如何快速为团队打造自己的组件库(下)—— 基于 element-ui 为团队打造自己的组件库文章来源地址https://www.toymoban.com/news/detail-423861.html

到了这里,关于elementUI 源码-打造自己的组件库,系列一:经典永不过时(先上车)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Code Llama系列教程之 微调 CodeLlama 34B 以进行聊天(打造自己的代码AI)

    虽然 Meta 的 Llama2 在 AI 领域引起了广泛关注,但 34b 模型却缺席了相当长一段时间。对于许多人来说,这个 34b 模型是运行本地 LLM 的理想选择,因为它与使用 4 位量化的单个 4090 GPU 兼容。我一直在热切地等待 Meta 发布这个特定的模型。幸运的是,Meta 最近推出了 CodeLlama,这是

    2024年02月07日
    浏览(54)
  • 【AutoGPT】你自己运行,我先睡了—— ChatGPT过时了吗?

    【AI绘画】Midjourney和Stable Diffusion教程_山楂山楂丸的博客-CSDN博客 系列文章目录 前言 一、AutoGPT是什么? 二、AutoGPT带来的利弊 三、AutoGPT和ChatGPT区别 四、未来 总结 (图片来源:GitHub平台) 它是一个实验性的开源应用程序,展示了 GPT-4 语言模型的功能。该程序由 GPT-4 驱动,

    2023年04月17日
    浏览(72)
  • vue2和elementUI 打造落日余晖登录页和滑块校验

    标题很夸张,实则是AI的功能,今天咱也搞一个登录页,其实满简单的一个东东,大家也都会用到,本次仅限前端,没有任何后台交互,技术 vue 、 vue-router 、 element-ui ,因为背景图是落日,所以就叫它 落日余晖登录页 吧 使用指令直接构建的,选择vue2版本 构建后的项目,删

    2024年02月05日
    浏览(47)
  • 召唤神龙打造自己的ChatGPT

    在之前的两篇文章中,我介绍了GPT 1和2的模型,并分别用Tensorflow和Pytorch来实现了模型的训练。具体可以见以下文章链接: 1. 基于Tensorflow来重现GPT v1模型_gzroy的博客-CSDN博客 2. 花费7元训练自己的GPT 2模型_gzroy的博客-CSDN博客 有了GPT模型,我们自然会想更进一步来训练自己的

    2024年02月14日
    浏览(40)
  • 个人IP打造全过程:如何打造出属于自己的个人IP?

    随着互联网的快速发展,个人IP已经逐渐成为一个热门话题。拥有自己的个人IP可以为你带来更多的机会和收益,让你在竞争激烈的市场中脱颖而出。但是,要想打造自己的个人IP并不是一件容易的事情。本文将为你介绍如何打造属于自己的个人IP。#IP#   一、了解自己 首先,

    2024年02月16日
    浏览(46)
  • LangChain:打造自己的LLM应用

    LangChain是一个框架,用于开发由LLM驱动的应用程序。可以简单认为是LLM领域的Spring,以及开源版的ChatGPT插件系统。核心的2个功能为: 1)可以将 LLM 模型与外部数据源进行连接。 2)允许与 LLM 模型与环境进行交互,通过Agent使用工具。 LangChain提供了各种不同的组件帮助使用

    2024年02月14日
    浏览(40)
  • 如何打造属于自己的个人IP?

    在当今信息爆炸的时代,个人 IP 已经成为人们在网络世界中的独特标签。无论是在职场上、创业中,还是在社交生活中,拥有个人 IP 的人都能脱颖而出,吸引更多的关注和机会。那么,如何打造属于自己的个人 IP 呢? 首先,找到自己的定位。 在打造个人 IP 的过程中,定位

    2024年02月14日
    浏览(39)
  • 如何打造属于自己的私域流量?

    客户助手官网地址:https://www.skynen.cn/ 一、前言: 现在,越来越多消费者更愿意通过互联网平台获取更多的新闻,也有更多的人选择网上购物,随之兴起的电商打开了全新的社交新零售,将用户沉淀为粉丝,那么如何构建私域流量呢? 01、“私域流量”是什么 回答这个问题之

    2024年02月04日
    浏览(42)
  • 打造自己的分布式MinIO对象存储

    MinIO是一个对象存储解决方案,它提供了一个与Amazon Web Services S3兼容的API,并支持所有核心S3特性。MinIO旨在部署在任何地方——公共云或私有云、裸机基础架构、协调环境和边缘基础架构。 分布式MinIO如何工作 Server Pool由多个Minio服务节点与其附属的多个磁盘构成。MinIO支持

    2024年02月11日
    浏览(54)
  • 如何轻松打造属于自己的水印相机小程序?

    水印相机小程序源码 描述:微信小程序。本文将为您详细介绍小程序水印相机源码的搭建过程,教您如何轻松打造属于自己的水印相机小程序。无论您是初学者还是有一定基础的开发者,都能轻松掌握这个教程。 一:水印相机搭建教程 1 隐私设置 首先,我们要设置小程序隐

    2024年03月12日
    浏览(56)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包