elementUI随笔

前言 

      忙里偷闲,身为一名搬砖农民工,想兢兢业业搬好每块砖,就须要巩固和提高自我技术水平,给本身定了个小目标帮助elementUI修复缺陷或提交一个PR,有了这个目标,我就先从阅读其源码开始落实。本文为阅读elementUI源码的笔记,完整我的注释在LearnElementUI css

水平有限,文章有错误实属正常 : ) 欢迎指出,互相探讨,共同进步,轻轻轻喷哈vue

项目的组成

      elementUI项目的组成我将其分为几大类主题:git

      设计与交互:github

            遵循一致性、反馈、效率和可控设计与交互原则。  dom

      工程组织:async

            monorepo替代Multirepos的代码管理方式,经过lerna解决core repo、changeLog等人肉维护问题。cooking简化开发依赖。工具

       持续集成与发布:post

             Karma 搭配 Mocha 和 Chai 等工具在 Travis CI 里作持续集成测试。学习

       风格:测试

             用BEM风格避免样式层级嵌套方便换肤等,用postcss落地css4风格语法。

       工具类:

             抽象并封装一系列工具方法,便于复用。

             外部工具: async-validator/deepmerge/normalize-wheel/throttle-debounce/popper 
             内部工具: directive/service/mixins/transitons/dom/popup/vue-popper/local/dateUtil/timeUtil 

      组件:

            独立可复用的vue实例,组成应用的最小颗粒。

            简单组件: scrollBar/popper/tooltip/formItem(validate)/collapse-transition
            复合组件: table/messageBox/dialog/select/menu/cascader/DateTimePicker  

------------------------------------------------------------------------------------------------

      我先探索“组件”和“风格”而“工程组织”下次再详细探讨。elementUI由以下组件和工具类构成。


                                                            图一:包含组件


                                                            图二:包含工具类

      探索一个组件须要完成什么功能,由什么构成,样式的分析,和其余组件配合时须要注意什么,完成过程当中有没有什么好的技巧?由浅入难,我找了个复杂度中等的select组件,事不宜迟,带着问题开始阅读探索。

Select组件

构成与功能清单

          

                                                         图四:Select 组件构成

   

                                                         图三:Select 功能清单

Option组件

      Option组件承担了以下职责:是否可选、选中、显示选项值、可选项的数目。 Option完整注解 

Tag组件

      Tag组件承担了删除选项事件派发职责。Tag完整注解

Option-Group组件

      没有承担什么职责,主要作派发操做如:查询值变化、选项分组可选变化。

Select-dropdown组件

      Select-dropdown组件主要职责是做为popper容器,popper用于实现下拉浮动效果,因此咱们先看看popper是如何实现的。

Popper 

       popper由下图构成并经过执行对应的modifier处理偏移数据。原做者的注释很是的完善,我就只着重的标识了些须要注意的地方。完整注释

改造Select组件

功能清单

总结

每一个功能一个小结,每一个小结带上技巧分析 疑问 ##  ### 功能清单 ##

      好了,完成了第一个组件的探索,沉溺学习不可自拔哈哈,下篇就要探索“工程组织”搭建一个组件小实验室,便于后续源码探索与实验。  

相关文章
相关标签/搜索