這篇文章將為大家詳細(xì)講解關(guān)于vue 組件的介紹,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
成都創(chuàng)新互聯(lián)主要從事網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)雞西,10多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220
Vue的兩大核心
1. 數(shù)據(jù)驅(qū)動(dòng) - 數(shù)據(jù)驅(qū)動(dòng)界面顯示
2. 模塊化 - 復(fù)用公共模塊,組件實(shí)現(xiàn)模塊化提供基礎(chǔ)
組件渲染過程
template ---> ast(抽象語法樹) ---> render ---> VDom(虛擬DOM) ---> 真實(shí)的Dom ---> 頁面
Vue組件需要編譯,編譯過程可能發(fā)生在
對(duì)應(yīng)的兩種方式 runtime-only vs runtime-compiler
runtime-only(默認(rèn))
runtime-compiler
啟用runtime-compiler
vue.config.js(若沒有手動(dòng)創(chuàng)建一個(gè))
module.exports = { runtimeCompiler: true //默認(rèn)false }
1. 字符串形式定義(不推薦)
例子
const CustomButton = { template: "" };
這種形式在運(yùn)行時(shí)才把template編譯成render函數(shù),因此需要啟用運(yùn)行時(shí)編譯(runtime-compiler)
2. 單文件組件(推薦)
創(chuàng)建.vue后綴的文件,定義如下
里只能有一個(gè)根節(jié)點(diǎn),即第一層只能有一個(gè)節(jié)點(diǎn),不能多個(gè)節(jié)點(diǎn)平級(jí)
這種形式在打包的時(shí)就編譯成render函數(shù),因此跟推薦這種方式定義組件
1. 全局注冊(cè)
全局注冊(cè)是通過Vue.component()注冊(cè)
import CustomButton from './components/ComponentDemo.vue' Vue.component('CustomButton', CustomButton)
優(yōu)點(diǎn)
缺點(diǎn)
適合
2. 局部注冊(cè)
在需要的地方導(dǎo)入
優(yōu)點(diǎn)
缺點(diǎn)
適合
組件復(fù)用
customButton 組件
每個(gè)組件都會(huì)創(chuàng)建一個(gè)新實(shí)例,組件的data必須是function,因?yàn)槊總€(gè)實(shí)例維護(hù)自己的data數(shù)據(jù)
1. 通過props屬性
定義一個(gè)button,按鈕文本通過props傳入
調(diào)用者通過attribute傳入
運(yùn)行效果
2. 通過插槽
組件在需要替換的地方放入插槽
調(diào)用者的innerHtml會(huì)替換插槽的值,若為空,使用默認(rèn)的
運(yùn)行效果
注意:看到是用自定義組件的innerHtml替換插槽,若插槽只有一個(gè),可以不寫name attribute,若多個(gè)插槽需指定插槽name attribute
1. 在組件內(nèi)部調(diào)用this.$emit觸發(fā)自定義事件
Click me {{times}} times
2. 調(diào)用者監(jiān)聽自定義事件
Button 2 Button 3 Total click {{totalClicks}} times
3. 運(yùn)行效果
關(guān)于vue 組件的介紹就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。