拜讀及分析Element原始碼 button元件篇

2021-09-11 10:58:03 字數 2000 閱讀 2212

button元件相關的有兩個檔案

按鈕組時使用,相當於button的乙個父容器,內包含乙個匿名插槽,具體的處理在button.vue中

class="el-button-group">

slot>

div>

template>

export

default ;

script>

複製**

class="el-button"

@click="handleclick"

:disabled="buttondisabled || loading"

:autofocus="autofocus"

:type="nativetype"

:class="[

type ? 'el-button--' + type : '',

buttonsize ? 'el-button--' + buttonsize : '',

]">

class="el-icon-loading"

v-if="loading">

i>

:class="icon"

v-if="icon && !loading">

i>

v-if="$slots.default">

slot>

span>

button>

複製**

loading:props接收的loading為真時顯示。

icon:props接收的icon為真並且loading為假時顯示。

插槽:接收到匿名插槽內容時顯示。(也就是使用button-group按鈕組時)

inject: ,

elformitem:

}複製**

這裡接收預設為空

如果button元件在form元件內使用,若form向子孫後代注入某些屬性。會影響button的一些樣式(本元件computed 中可以看到)。

那麼問題來了,有props為什麼還要用 provide 和 inject 呢,因為前者只能用於父子,後者可以子孫後代,層級更深

computed: ).elformitemsize;

},// 大小樣式由props接收的size和formitem元件注入的size以及全域性配置物件($element,此物件由引入時vue.use()傳入的預設空物件)的size決定

buttonsize() ).size;

},// props接收disabled以及form元件注入的disabled決定(loading時也禁止↑)

buttondisabled() ).disabled;}}

複製**

disabled的影響因素

methods: 

}複製**

可以結合element文件看

props: ,

// 按鈕大小

size: string,

// icon

icon: ,

// 原生button屬性

nativetype: ,

// 按鈕的loding動畫

loading: boolean,

// 禁用

disabled: boolean,

// 樸素樣式

plain: boolean,

// 聚焦

autofocus: boolean,

// 圓角

round: boolean,

// 圓形

circle: boolean

}複製**

$slots.default: 獲取所有匿名插槽分發的內容 $slots官方傳送門

element原始碼解析 打包構建

本篇文章主要對 element 框架的 build 目錄 及 package.json 中的 scripts 指令碼,也就是element專案的指令碼構建打包進行解析。廢話不多說,先來張圖 對於node專案,除了對整體結構的瀏覽,第一步要做的事,就是檢視專案的核心檔案,package.json。由於...

JDK類載入機制原始碼分析及原始碼分析

jvm的類載入機制主要有如下三種機制 1.全盤負責 所謂全盤負責,就是說當乙個類載入器載入個個class的時候,該class所依賴和引用的其他class也將由該類載入 器負責載入,除非使用另外乙個類載入器來載入。2.雙親委託 所謂雙親委託則是先讓parent 父 類載入器試圖載入該class 若父載...

Spring設計及原始碼分析

最近這幾天在看spring的設計與原始碼,又是把自己折磨的死去活來的。但是這麼經典的東西總是要好好體會吧,畢竟機會不多。寫一點自己的思考和感觸吧 問題1 ioc和di到底有什麼區別?之前一直認為是同乙個東西,就是從不同的角度來看的,所以有了不同的名稱 主要是從李剛的那本書上看到所理解的 但是最近去官...