元件使用分為三個步驟:
1.建立元件構造器物件(呼叫vue.
extend
()方法建立元件構造器)
2.註冊元件(呼叫vue.
component
()方法註冊元件)
3.使用元件(在vue例項的作用範圍內使用元件)
使用例項:
1.建立
const mycomponent = vue.
extend()
;2.註冊(全域性元件)
vue.
component
('my-cpn'
,mycomponent )
;3.使用
在vue例項管理的html**中使用
<
/my-cpn>即可。
cpn就是component的縮寫
注意``是es6中的語法,類似於引號』和雙引號",但功能更強大,換行時可以不用使用+連線。
//註冊區域性元件
newvue(,
components:})
;
//註冊父子元件
const childcpn= vue.
extend()
;const parentcpn = vue.
extend(}
);
註冊元件的語法糖:就是把vue.extend()方法所需的物件引數直接替換到原來的元件構造器物件cpn處。就省略了vue.extend()。但實際上原始碼中還是呼叫的vue.extend()。
//提取template模板
//第一種方法
"text/x-template" id=
"cpn"
>
some html contents.
<
/script>
vue.
component()
<
/script>
//第二種寫法
"cpn2"
>
some html contents.
<
/template>
vue.
component()
<
/script>
vue例項可以看成是根元件,root元件。註冊元件寫法的演變過程
1.最原始的3步註冊元件。2.省略vue.extend()。
3.提取template模板。
元件的data必須是函式。原因:因為函式每次返回的data資料是新物件,元件多次復用時,相互之間資料是沒有影響的。
子元件不能直接訪問父元件或者vue例項中的資料。這就涉及到了資料的傳遞。父子元件的通訊方式:(注意駝峰命名)
1.通過props從父元件向子元件傳遞資料
問題報錯:vue expected boolean, got string with value 「false」
解決:這種情況是有一些屬性的值應該填寫boolean型別,但是當前的值可能是「」字串。這種情況只需要在屬性前面加上:即可。
2.通過事件從子元件向父元件傳送訊息
在子元件中發射自定義事件『item-click』
this.$emit('item-click',要傳遞的物件)
3.兄弟元件間通訊
兄弟元件之間的通訊是通過父元件作為中間媒介來進行通訊的。
元件的template模板下有很多標籤時,要用
標籤包起來。
watch()
this
.$children //獲取的為全部的子元件,陣列型別
this
.$refs //獲取的為所有包含ref屬性的子元件,物件型別
this
.$parent //上一級元件,物件型別
this
.$root //根元件,物件型別
slot插槽:元件的插槽是為了讓封裝的元件功能更強大,更加具有擴充套件性。可以分為匿名插槽,具名插槽,作用域插槽。
可以有預設值
具名插槽,可以替換指定插槽
} v-slot的出現是為了代替原有的slot和slot-scope,簡化了一些複雜的語法,可以縮寫為#
一句話概括就是v-slot :後邊是插槽名稱,=後邊是元件內部繫結作用域值的對映。
"viewport" content=
"width=device-width, initial-scale=1.0"
>
vue元件與元件化
元件化是當今最為流行的一種可復用性增加的方法,隨著當今前端開發的複雜度更加,這個元件化變得越來越流行 vue.js通過vue.extend 方法來擴充套件元件的使用 vue.extend options 裡面的options引數和 vue options 的options引數幾乎是一致的 new v...
Vue的元件化
元件化是vue的精髓,vue就是由乙個乙個的元件構成的。vue的元件化設計到的內容又非常多,當在面試時,被問到 談一下你對vue元件化的理解。這時候又有可能無從下手,因此在這裡闡釋一下個人對vue的元件化的理解。一般來說,元件大致可以分為三類 頁面級別的元件。業務上可復用的基礎元件。與業務無關的獨立...
Vue元件化之構造元件
在構建專案中盡可能的將頁面分成乙個個小的 可復用的元件。一 構造全域性元件 但必須在例項掛載的元素中使用 註冊元件 vue.component cpn,cpnc 給構造器中的模板命名為cpn 即標籤的名字 使用元件 二 語法糖註冊全域性元件 即將一二步合併 vue.component cpn com...